bonsoir,
j'ai 3 entités "liées", dont je veux les hydrater dans le même formulaire.
alors un 'advert' appartient à un et un seul 'customer' qui possède 'un et un seul account'
les entités advert, customer et account sont associées respectivement aux advertType, customerType et accountType.
le problème c'est que: depuis le advertType, je veux utiliser seulement 3 champs (parmi 5) de customerType et 2 champs (parmi 4) de accounttype.

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
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
<?php
 
namespace XX\XXBundle\Form;
 
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolver;
use Symfony\Bridge\Doctrine\Form\Type\EntityType;
 
//*****************************************************************
use Symfony\Component\Form\Extension\Core\Type\CheckboxType;
use Symfony\Component\Form\Extension\Core\Type\IntegerType;
use Symfony\Component\Form\Extension\Core\Type\TextareaType;
use Symfony\Component\Form\Extension\Core\Type\TextType;
//*******************************************************************
 
class AdvertType extends AbstractType
{
    /**
     * {@inheritdoc}
     */
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder
                ->add('title',       TextType::class
                        , array(
                        'label'=>'Titre',
                        'attr' => array(
                        'placeholder' => 'Titre',
                        )))
                ->add('content',     TextareaType::class                       
                        , array(
                        'label'=>'Description',
                        'attr' => array(
                        'placeholder' => 'Description...',
                        )))
                ->add('price',       IntegerType::class
                        , array(
                        'label'=>'Prix',
                        ))
                ->add('brand',       TextType::class
                         , array(
                        'label'=>'Marque',
                        'attr' => array(
                        'placeholder' => 'Marque(s)',
                        )))
                ->add('showphone',   CheckboxType::class
                        , array(
                        'required' => false,
                        'label'=>'Afficher le numéro',
                        ))
                ->add('picture',     PictureType::class
                        , array(
                        'data_class' => null,
                        'label'=>'Photos',
                        ))
                ->add('published',   CheckboxType::class
                        , array(
                            'required' => false,
                            'label'=>'Publier',
                            ))
                ->add('category',    EntityType::class, array(
                            'class'        => 'XXXXBundle:Category',
                            'choice_label' => 'longname',
                            'multiple'     => false,
                            'expanded'     => false,
                      ))
 
                ->add('customer',    CustomerType::class)
                ->add('account',     AccountType::class)
                /*->add('save',        SubmitType::class
                        , array(
                        'label'=>'Publier mon annonce',
                        'attr' => array('class' => 'clearfix'),
                        )                        
                    )*/
        ;
    }
 
    /**
     * {@inheritdoc}
     */
    public function configureOptions(OptionsResolver $resolver)
    {
        $resolver->setDefaults(array(
            'data_class' => 'XX\XXBundle\Entity\Advert'
        ));
    }
 
    /**
     * {@inheritdoc}
     */
    public function getBlockPrefix()
    {
        return 'xx_xxbundle_advert';
    }
 
 
    public function getName()
    {
        return 'advert';
    }
 
}
remarque : j'ai essayer d'ajouter le bouton 'submit' au niveau de controleur mais ça n'a pas fonctionné d'apres une recommandation
merci d'avance.