Я учусь создавать базовый блог в Symfony2 и зашел в тупик, когда дело доходит до добавления системы комментариев.
До сих пор я мог нормально просматривать записи блога.Под одним постом в блоге я использую Twig для визуализации формы непосредственно из контроллера:
{% render "PaulDemoBundle:Default:addComment" with { 'id': blog_entry.id } %}
Как видите, я заполняю идентификатор идентификатором просматриваемого блога, чтобы я могчтобы правильно прикрепить комментарий к записи блога.
Ниже приведено действие в моем контроллере:
public function addCommentAction(Request $request, $id)
{
$add_comment = new Comment();
$add_comment->setBlogId($id);
$form = $this->createFormBuilder($add_comment)
->add('blog_id', 'hidden')
->add('author', 'text')
->add('comment', 'textarea')
->getForm();
if ($request->getMethod() == 'POST') {
$form->bindRequest($request);
if ($form->isValid()) {
$comment = $form->getData();
$em = $this->getDoctrine()->getEntityManager();
$em->persist($comment);
$em->flush();
return $this->redirect($this->generateUrl('_index'));
}
}
return $this->render('PaulDemoBundle:Default:add_comment.html.twig', array('form' => $form->createView(), 'id' => $id));
}
здесь вы можете видеть, что контроллер может получить данные запроса и blog_id ($Я бы).Форма создается со скрытым полем, которое содержит blog_id.
Просматривая исходный код HTML, вы получаете следующее:
<form action="/Symfony/web/app_dev.php/add_comment/3" method="post" >
<div id="form">
<input type="hidden" id="form__token" name="form[_token]" value="d4adb511709259d0df921a0a1b969cee0df83630" />
<input type="hidden" id="form_blog_id" name="form[blog_id]" value="3" />
<div><label for="form_author" class=" required">Author</label><input type="text" id="form_author" name="form[author]" required="required" value="" /></div>
<div><label for="form_comment" class=" required">Comment</label><textarea id="form_comment" name="form[comment]" required="required"></textarea></div></div>
<input type="submit" />
Опять же, вы можете видеть, чтоblog_id был пройден через (3).
Теперь, заполнив Author и Comment и нажав Submit, я получаю ошибку.Кажется, что blog_id имеет значение NULL.Я сделал var_dump (и закомментировал постоянные данные), и данные запроса формы показывают, что blog_id установлен на 3.
Я даже приведу $ id к (int), так как данные формы показывают его какстрока (это не должно быть проблемой, так как это должно быть сделано INT, когда оно сохраняется в БД.
Кто-нибудь может увидеть проблему?
В основном у меня есть комментарий M: 1: Блоги мне нужно как-то сообщить приложению, какой блог просматривается, и передать идентификатор (который я делаю, но он не работает!)
edit: var_dump:
object(Paul\DemoBundle\Entity\Comment)#67 (6) {
["id":"Paul\DemoBundle\Entity\Comment":private]=> NULL
["blog_id":"Paul\DemoBundle\Entity\Comment":private]=> string(1) "3"
["blog":"Paul\DemoBundle\Entity\Comment":private]=> NULL
["author":"Paul\DemoBundle\Entity\Comment":private]=> string(8) "Mr Jones"
["comment":"Paul\DemoBundle\Entity\Comment":private]=> string(4) "test"
["created":"Paul\DemoBundle\Entity\Comment":private]=> NULL }