[Symfony2/Twig] problème affichage avec boucle !

marvin63
Invité n'ayant pas de compte PHPfrance

23 janv. 2013, 10:20

Bonjour à tous,

Je suis débutant avec symfony2, et j'ai un petit soucis avec l'affichage; je m'explique. Je veux réaliser un formulaire imbriqué dans un tableau, pour que des agents puissent renseigner, en face des dates (colonnes de gauche), le nombre d'heures effectuer dans telle ou telle catégories. Il faut donc que je puisse identifier chaque input avec un id unique pour pouvoir savoir la catégorie ainsi que la date. Voici mon code :

Code du Formulaire :
public function buildForm(FormBuilderInterface $builder, array $options)
     {
 
        $mois= date("n");
        $year = date("Y");
        if($mois == 1)
        {
                $mois = 12;
                $year = $year - 1;
        }
        else {
                $mois = $mois - 1;
        }
        $num = cal_days_in_month(CAL_GREGORIAN, $mois, $year); //pour savoir le nombre de jour du mois precedent.
        for($i=1;$i <= $num ; $i++){
                $builder->add('IndemnitesNuit'.$i , 'text');
 
        }
J'ai donc des champs de type IndemnitesNuit1, IndemnitesNuit2, ...

Code de la vue :

Code : Tout sélectionner

{% for i in 1..tst %} {# tst est une valeur renvoyer par le controleur, et contenant le nombre de jour du mois #} <tr> <td> {{ i }}</td> <td>{{ form_widget(form.IndemnitesNuit~i) }}</td> <td>{{ form_widget(form.IndemnitesNuit1) }}</td> </tr> {% endfor %}
Le problème se situe dans la boucle. Le form_widget(form.IndemnitesNuit1) m'affiche bien mon input attendu alors que l'autre ligne non. Mon but est d'automatiser l'affichage des input en parcourant la boucle ; le problème c'est que je n'arrive pas a trouver la synthaxe adéquate pour indiquer le nom de mon champs de IndemnitesNuit1 à IndemnitesNuit31. J'ai donc esseyer en faisant form_widget(form.IndemnitesNuit~i) mais cela ne fonctionne pas .

Voici l'erreur générer :

Method "IndemnitesNuit" for object "Symfony\Component\Form\FormView" does not exist in Formulaire:index.html.twig at line 53

Pouvez vous m'aider ? Cela fait plusieurs jours que je bloque là-dessus ...Merci d'avance.

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

25 janv. 2013, 10:46

Plutôt que de construire dynamiquement des noms de champs ("'IndemnitesNuit1", "'IndemnitesNuit2", ...), pourquoi ne pas profiter de la syntaxe en tableau ("IndemnitesNuit[]") ?
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer