Symfony2 - система блогов и комментариев - как сохранить комментарий - PullRequest
0 голосов
/ 22 августа 2011

Я учусь создавать базовый блог в 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 } 

1 Ответ

0 голосов
/ 23 августа 2011

Наконец-то понял.Просто нужно было получить запись в блоге через GetRepository и использовать ее, чтобы связать комментарий и блог вместе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...