jquery symfony 2.8 - AJAX 注解系统

hm2xizp9  于 2023-08-04  发布在  jQuery
关注(0)|答案(1)|浏览(100)

我想用symfony(2.8)做一个 AJAX 注解系统,不幸的是,目前我甚至不能通过'$isAjax = $request->isXmlHttpRequest();'
我很抱歉,如果代码不是100%干净,我和测试了很多东西在这一点上。
下面是我的控制器的一个片段:

public function showCommentsAction($id)
{
    $request = $this->container->get('request');
  $em = $this->getDoctrine()->getManager();
  $event = $em->getRepository('MainBundle:Events')->find($id);
  $comments = $em->getRepository('MainBundle:Comments')->find($id);
  $user = $this->get('security.token_storage')->getToken()->getUser();
  $comment = new Comments();
  $comment->setEvent($event);
  $comment->setDateComment(new \DateTime("now"));
  $form = $this->get('form.factory')->createBuilder('form', $comment)
      ->add('comment')
      ->getForm();
  $isAjax = $request->isXmlHttpRequest();
  var_dump($isAjax);
  if ($request->isXmlHttpRequest()) {
      $form->handleRequest($request);
      // On vérifie que les valeurs entrées sont correctes
      // (Nous verrons la validation des objets en détail dans le prochain chapitre)
      if ($form->isValid()) {

          // On l'enregistre notre objet $advert dans la base de données, par exemple
          $em = $this->getDoctrine()->getManager();
          $em->persist($comment);
          $em->flush();
          return $this->redirect($request->getUri('event'));
      }
  }

  return $this->render('MainBundle:Default:Events\event.html.twig',array("event"=> $event,'form'=>$form->createView()));

字符串
下面是我的js:

$(document).ready(function() {
// Au submit du formulaire
$('#form').submit(function () {
    // On fait l'appel Ajax
    $.ajax({
        type: "POST",
        url: "{{ path('showcomments'}}",
        //data: {commentaire: commentaire, _csrf_token: "{{ csrf_token('authenticate') }}"},
        cache: false,
        data: {event_id: event_id},
        success: function (data) {
            alert('succes');
        }
    });

    // On retourne false pour ne pas recharger la page
    return false;
});
});


我的路线:

showcomments:
path:     /showcomments/{id}
defaults: { _controller: MainBundle:Comments:showcomments }
methods: POST


我的形式:

<li class="write-new">
    <form action="{{ path('showcomments', {'id' : event_id}) }}" method="POST" {{ form_enctype(form) }} id="form">
        {{ form_widget(form) }}

        <input type="submit" />
    </form>
</li>

brtdzjyr

brtdzjyr1#

你在 AJAX 数据中传递/showcomments/{id}{id}。根据你的路线,它是一个参数。先试试url: "{{ path('showcomments',{'id': yourId})}}",,试试你的id,只要硬编码,就像你在表单中输入的一样。所以你也可以直接从你的表单中使用url。不要忘记在提交时防止默认。要检查你 AJAX 是否工作,你应该这样做:

return new Response($id);

字符串
在JS

success(data){console.log(data)}


基本上,您不需要$event = $em->getRepository('MainBundle:Events')->find($id);
如果你这么做

showCommentsAction(Event $event)


它将自动查找。

$comment->setDateComment(new \DateTime("now"));


这一行可以在你的实体的控制器中完成,你不需要传递“now”。

相关问题