Accès à des attributs d'un objet fils dans Twig
Bonjour,
J'utilise CraueFormFlowBundle pour la création d'un formulaire en plusieurs étapes. J'en ai deux. Donc, dans mon template, j'ai ceci :
Code:
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
|
{% extends "base.html.twig" %}
{% form_theme form 'bootstrap_4_layout.html.twig' %}
{% block stylesheets %}
{{ parent () }}
<link rel = "stylesheet" href = "//cdnjs.cloudflare.com/ajax/libs/bootstrap-datepicker/1.6.0/css/bootstrap-datepicker.css">
{% endblock %}
{% block body %}
<h1>Création de votre annonce</h1>
{{ form_start(form) }}
{{ form_errors(form) }}
{% if flow.getCurrentStepNumber() == 1 %}
...
Mise en forme de mes différents champs lors de la première étape
{% endif %}
{% if flow.getCurrentStepNumber() == 2 %}
<div>
<h4>Prix</h4>
{{ form_rest(form) }}
</div>
{% endif %} |
De cette manière, tout fonctionne correctement.
Par contre, si je remplace
Code:
{{ form_rest(form) }}
pour mettre en forme les différents champs lors de l'étape 2, de cette manière par exemple,
Code:
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
|
{% if flow.getCurrentStepNumber() == 2 %}
<div>
<h4>Prix</h4>
{% set i = 0 %}
{% for price in form.prices %}
{{ form_label(form.price.price, 'Prix', {'label_attr': {'class': 'foo'}}) }}
{{ form_errors(form.price.price) }}
{{ form_widget(form.price.price) }}
{{ form_label(form.price.duration, 'Durée', {'label_attr': {'class': 'foo'}}) }}
{{ form_errors(form.price.duration) }}
{{ form_widget(form.price.duration, { disabled:disabled }) }}
{{ form_label(form.price.season, 'Saison', {'label_attr': {'class': 'foo'}}) }}
{{ form_errors(form.price.season) }}
{{ form_widget(form.price.season, { disabled:disabled }) }}
<button type="button" id="prices_advert_prices_{{ i }}" class="btn-remove">
Supprimer cette durée
</button>
{% set i = i + 1 %}
{% endfor %}
</div>
{% endif %} |
alors je reçois l'erreur suivante :
Citation:
Neither the property "price" nor one of the methods "price()", "getprice()"/"isprice()"/"hasprice()" or "__call()" exist and have public access in class "Symfony\Component\Form\FormView".
Apparemment, l'erreur provient du fait que Twig ne parvient pas à accéder aux attributs d'objets (price) faisant partie d'une collection (prices) appartenant à l'objet principal (advert) sur lequel repose le formulaire.
Quelqu'un aurait une idée sur la manière dont il faut procéder pour mettre en forme ces champs?
Merci d'avance pour votre aide.