Twig : accéder à un attribut d'un objet d'un sous-formulaire
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:
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:
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:
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 :
Citation:
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.