Bonjour ,
J'essaye de construire un formulaire imbriqué (Article et Commentaire ) , je me demande pourquoi les champs du formulaire Commentaire ne s'affiche pas au niveau de la vue .



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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
 <?php
 
namespace Blog\newsBundle\Form;
 
use Blog\newsBundle\Entity\Picture;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolverInterface;
use Blog\newsBundle\Form\CommentaireType;
 
class ArticleType extends AbstractType
{
        /**
     * @param FormBuilderInterface $builder
     * @param array $options
     */
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder
            ->add('titre','text')
            ->add('auteur','text')
            ->add('datePub',"date")
            ->add('contenue',"textarea")
            ->add('commentaires','collection',array( 'type' => new CommentaireType(), 'prototype'=>true,'allow_add' =>true,'by_reference'=>false))
            ->add('Envoyer','submit')
            ->add('Annuler','reset');
 
 
    }
 
    /**
     * @param OptionsResolverInterface $resolver
     */
    public function setDefaultOptions(OptionsResolverInterface $resolver)
    {
        $resolver->setDefaults(array(
            'data_class' => 'Blog\newsBundle\Entity\Article'
            //'cascade_validation' => true
        ));
    }
 
    /**
     * @return string
     */
    public function getName()
    {
        return 'blog_newsbundle_article';
    }
}

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
32
33
34
35
36
37
38
39
40
41
42
43
<?php
 
namespace Blog\newsBundle\Form;
 
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolverInterface;
 
class CommentaireType extends AbstractType
{
        /**
     * @param FormBuilderInterface $builder
     * @param array $options
     */
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder
            ->add('titre','text')
            ->add('auteur','text')
            ->add('datePubCom','date')
            ->add('contenue','textarea')
            //->add('article')
        ;
    }
 
    /**
     * @param OptionsResolverInterface $resolver
     */
    public function setDefaultOptions(OptionsResolverInterface $resolver)
    {
        $resolver->setDefaults(array(
            'data_class' => 'Blog\newsBundle\Entity\Commentaire'
        ));
    }
 
    /**
     * @return string
     */
    public function getName()
    {
        return 'blog_newsbundle_commentaire';
    }
}
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
<?php
/**
 * Created by PhpStorm.
 * User: dev
 * Date: 08/03/14
 * Time: 10:43
 */
 
namespace Blog\newsBundle\Controller;
 
 
use Blog\newsBundle\Entity\Article;
use Blog\newsBundle\Form\ArticleType;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
 
class BlogController extends Controller{
 
 
    public function indexAction()
    {
        $article=new Article();
 
        $form=$this->createForm(new ArticleType(),$article);
 
        $request=$this->get('request');
 
        if($request->getMethod() == 'POST')
 
            $form->bind($request);
 
        if($form->isValid())
            {
                 $em=$this->getDoctrine()->getManager();
                 $em->persist($article);
                 $em->flush();
 
               return $this->redirect($this->generateUrl('blognews_succes'));
 
             }
 
        return $this->render('BlognewsBundle:Default:index.html.twig',array('form'=>$form->createView()));
    }
 
    public function succesAction()
    {
        $nom="PPP";
        return $this->render('BlognewsBundle:Blog:afficher.html.twig',array('nom'=>$nom));
    }
 
 
 
 
 
 
 
 
}