IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Symfony PHP Discussion :

createForm collection problème entre _token et la ligne 0 (loop.index0)


Sujet :

Symfony PHP

  1. #1
    Membre régulier
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2014
    Messages
    124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2014
    Messages : 124
    Points : 71
    Points
    71
    Par défaut createForm collection problème entre _token et la ligne 0 (loop.index0)
    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

  2. #2
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Juin 2011
    Messages
    725
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juin 2011
    Messages : 725
    Points : 1 050
    Points
    1 050
    Par défaut
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    {% for fieldName, field in form if fieldName !='_token' %}
        {{form_widget(field.prenom)}} ...
    {% endfor %}
     
    {{form_rest(form)}}

  3. #3
    Membre régulier
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2014
    Messages
    124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2014
    Messages : 124
    Points : 71
    Points
    71
    Par défaut
    Merci beaucoup pour cette information.

    moi j'ai fait ainsi mais je ne comprends toujours pas le rapport avec la valeur key 0

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <h1>token</h1>
     
    <form method="post">
    	{% for form in form %}
    		{% if form|length != "_token" %}
    			{{form_widget(form.prenom)}}
    			{{form_widget(form.nom)}}
    		{% endif %}
    	{% endfor %}
    	<input type="submit">
    </form>
    par contre if(key != "_token") je perds le _token mais aussi le key 0 pourquoi

    de plus si je boucle mes lignes pourquoi {{form.0.prenom }} ou {{form[loop.index0].prenom}} ne fonctionnent pas alors que sans boucle comme cité plus haut fonctionne.

    Merci d'avance si quelqu'un peu m'aider à comprendre cette key _token

    de plus en mode rows cela crée des <div> hors si je souhaite avoir div<style="inline-block"> par exemple il y aurait il un autre moyen que de surcharger le layout par défaut dans le bridge widget.

    de plus les form_errors() pourquoi par default une liste <ul><li> donc bloc entre le label et la valeur si je fais form_row(form)

  4. #4
    Membre régulier
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2014
    Messages
    124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2014
    Messages : 124
    Points : 71
    Points
    71
    Par défaut
    Citation Envoyé par arnooo999 Voir le message
    ...
    Non car cela affiche tout le reste rest() hors si je veux récupérer uniquement le nom ou le prenom.

    J'ai résolu en comptent le tout différent de _token

Discussions similaires

  1. Problème d'alignement de texte entre cellule sur 1 ligne
    Par rouletabille63 dans le forum BIRT
    Réponses: 2
    Dernier message: 08/08/2012, 23h14
  2. Problème Entrée ligne avec Winamp
    Par black is beautiful dans le forum Windows XP
    Réponses: 3
    Dernier message: 04/10/2007, 13h29
  3. Problème entre IB 6.0 et Access 2000
    Par Polux63 dans le forum InterBase
    Réponses: 3
    Dernier message: 19/04/2004, 11h34
  4. Problème entre Dev-c++ et Borland c++ compiler 5.5
    Par Argonz dans le forum Dev-C++
    Réponses: 6
    Dernier message: 21/10/2003, 17h21
  5. [ODBC] Problème entre access et ODBC
    Par StephCal dans le forum Access
    Réponses: 4
    Dernier message: 09/07/2003, 17h47

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo