[英]symfony 2.8 - comment system in AJAX
我想用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>
您在ajax数据中传递/showcomments/{id}
{id}
。 根据您的路线,它是一个参数。 尝试使用url: "{{ path('showcomments',{'id': yourId})}}",
首先尝试使用硬编码来尝试yourId,就像放在表单中一样。 因此,您也可以直接从表单中使用url。 不要忘记提交时阻止preventDefault。 要检查您的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"));
这行代码可以在您实体的控制器中完成,您无需传递“现在”。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.