Bonjour à tous,

J'ai un petit soucis avec Symfony les forms

Contexte :
Deux entités :
  • BlogPost
  • BlogComment


Le BlogPost contient des BlogComments et vice et versa.

Quand j'affiche mon BlogPost j'ai inclue un formulaire pour rajouter un BlogComment à la suite (comme sur tout blog en faite).

Mais je n'arrive pas à référencer directement le BlogPost au BlogComment pour que ça soit invisible aux yeux de l'utilisateur.

CommentController
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
 
    public function newAction(BlogPost $post=null) {
 
        $comment = new BlogComment();
 
        if ($post) {
            $comment->setPost($post);
        }
 
        $form = $this->createForm(new CommentType(), $comment);
 
        return $this->render('SymbioseBlogBundle:Comment:new.html.twig', array('form' => $form->createView()));
    }
 
    public function createAction() {
        $comment = new BlogComment();
        $request = $this->getRequest();
        $form    = $this->createForm(new CommentType(), $comment);
        $form->bindRequest($request);
 
        if ($form->isValid()) {
            $em = $this->getDoctrine()->getEntityManager();
            $em->persist($comment);
            $em->flush();
 
            return $this->redirect($this->generateUrl('SymbioseBlogBundle_view_post', array('id' => $comment->getPost()->getId())));
 
        }
 
        return $this->render('SymbioseBlogBundle:Comment:new.html.twig', array('form' => $form->createView()));
    }
Ma FormType

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<?php
 
namespace Symbiose\BlogBundle\Form\Type;
 
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilder;
 
class CommentType extends AbstractType
{
    public function buildForm(FormBuilder $builder, array $options)
    {
        $builder->add('text','textarea')
                ->add('post','hidden');
    }
 
    public function getName()
    {
        return 'comment';
    }
 
    public function getDefaultOptions(array $options)
    {
        return array(
            'data_class' => 'Symbiose\BlogBundle\Entity\BlogComment',
        );
    }
}
Ma FormTwig
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
<form action="{{ path('SymbioseBlogBundle_create_comment') }}" method="post" {{ form_enctype(form) }} class="new_comment">
    {{ form_errors(form) }}
 
    {{ form_widget(form.text,{ 'attr': {'class': 'comment_field'}}) }}
 
    {{ form_rest(form) }}
 
        <p class="submit">
            <input type="submit" class="button-submit" value="Ajouter" />
        </p>
    </form>
Si quelqu'un à une idée je suis preneur.

Cdt.