Bonjour à tous,

fichiers : controller, 1entity, 1formType, 1 view

Il y a peut être quelque chose qui m'échappe à propos du _token car je rencontre le problème suivant:

Si j'isole pas le _token qui n'est pas un numéro d'array j'ai une erreur par contre si l'évite dans ma boucle je perds la ligne 0 de ma dite collection.

Ce que je veux faire dans une boucle du formulaire dans mon twig:

celui ci ainsi functionne
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
 
<form method="POST">
{{form_widget(form.0.prenom)}}
{{form_widget(form.0.valider)}}
{{form_widget(form.1.prenom)}}
{{form_widget(form.1.valider)}}
{{form_widget(form.2.prenom)}}
{{form_widget(form.2.valider)}}
</form>
Ce que j'ai pensé faire et qui fonctionne puisque j'appelle tous le form mais avec le form_rest mise en haut pour avoir ligne 0 puisque condifition sur _token:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
 
<!doctype html>
<h1> test </h1>
 
{{form_start(form)}}
{{form_rest(form)}}
{% for form in form %}
{% if loop.index0 != "_token" %}
{{form_widget(form)}}
{% endif %}
{% endfor %}
{{form_end(form)}}
par contre voila ce qui me pause problème si je tente de récupérer qu'un champs "input" de mon form par ligne
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
 
<!doctype html>
<h1> formulaire </h1>
 
{{form_start(form)}}
{{form_rest(form)}}
{% for form in form %}
{% if loop.index0 != "_token" %}
{{form(form[loop.index0].prenom)}}
{% endif %}
{% endfor %}
{{form_end(form)}}
La j'obtiens une belle erreur de ce type:

Key "1" in object with ArrayAccess of class "Symfony\Component\Form\FormView" does not exist in testBundleefault:test.html.twig at line x

Ce que je remarque, es que si je fais un {{loop.index0}} avec _token j'obtiens 012 (3 = _token) qui pose problème si je l'enlève pas par contre si je l'évite j'obtiens 123 nombre de ligne cool me dis je.

hors si je retente cité plus haut erreur à nouveau car plus de ligne 0

Pour finir j'ai essayé cela et même délire

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
19
20
 
<!doctype html/>
<htm>
	<body>
Hello!
 
<form method="post">
 
{% for key in form|keys %}
{% if key != "_token" %}
 
{{form_widget(form[loop.index0].prenom)}}
{{form_widget(form[loop.index0].valider)}}
{% endif %}
{% endfor %}
 
<input type="submit"/>
</form>
</body>
</html>
Encore une fois j'ai mais ligne sauf la première comment récupérer la dite ligne sans être ennuyé par le token


Mais questions sont:

Comment éviter le _token dans une boucle sans altérer la ligne 0 puisqu'elle est supprimé en même temps que le _token ?
Comment avec le _token m'éviter l'erreur comme quoi il ne peux pas traité la boucle car _token n'est pas un nombre donc foire mon loop.index0 ?
Pourquoi le _token est il en relation direct avec la ligne 0 de ma collection ?
j'ai bien tenté de mettre un _token en hidden dans mon formbuilder mais cela n'a rien changer pensant qu'étant déclaré il pourrais lâcher la grappe à ma première entré collection0 ?

A quoi fait référence cette erreur de arrayAccess cela aurait il avoir du au faite que le _token pas trouvé ?


Merci pour vos conseils éventuel

A bientôt