Bonjour,

J'ai un formulaire "AdvertType" qui fait appel à un sous formulaire "VehicleType" qui lui-même contient un champ de type "EntityType" que je voudrais scinder en deux groupes de cases à cocher dans mon template.

Voici le code probant dans "AdvertType" :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
 
...
class AdvertType extends AbstractType
{
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder
...
            ->add('vehicle', VehicleType::class)
...
Celui dans "VehicleType" :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
 
...
class VehicleType extends AbstractType
{
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder
...
            ->add('equipments', EntityType::class, array('class' => 'App\Entity\Equipment', 'multiple' => true, 'expanded' => true, 'choice_label' => 'equipment',))
...
Et voici ce que je fais dans le template twig pour tenter d'afficher les équipements en fonction de leur appartenance (catégorie) :

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
 
..
        {{ form_errors(formAdvert.vehicle.equipments) }}
        {{ form_label(formAdvert.vehicle.equipments, 'Equipement du porteur', {'label_attr': {'class': 'foo'}}) }}
        {% for equipment in formAdvert.vehicle.equipments if equipment.belonging == 'Porteur' %}
 
            {{ form_row ( equipment ) }}
 
        {% endfor %}
 
        {{ form_errors(formAdvert.vehicle.equipments) }}
        {{ form_label(formAdvert.vehicle.equipments, 'Equipement de la cellule', {'label_attr': {'class': 'foo'}}) }}
        {% for equipment in formAdvert.vehicle.equipments if equipment.belonging == 'Cellule' %}
 
            {{ form_row ( equipment ) }}
 
        {% endfor %}
...

Lors de la génération du template, j'obtiens l'erreur :

Neither the property "belonging" nor one of the methods "belonging()", "getbelonging()"/"isbelonging()"/"hasbelonging()" or "__call()" exist and have public access in class "Symfony\Component\Form\FormView".
Je suppose que ça provient de ma condition if qui accède à la valeur d'un attribut d'un objet embarqué dans un formulaire lui-même embarqué.

Quelqu'un aurait une idée de la manière de procéder pour réaliser ce que je voudrais?

Merci d'avance pour votre aide.