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 :
{% 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
{{ form_rest(form) }}
pour mettre en forme les différents champs lors de l'étape 2, de cette manière par exemple,
{% 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 :
"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.
J'ai trouvé mon erreur : au lieu de
{{ form_errors(form.price.price) }}
je devais faire
{{ form_errors(price.price) }}
étant donné que c'est dans ma boucle.