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 :

Besoin d'aide formulaire d'édition Symfony2 [2.x]


Sujet :

Symfony PHP

  1. #1
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2005
    Messages
    109
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Service public

    Informations forums :
    Inscription : Décembre 2005
    Messages : 109
    Points : 88
    Points
    88
    Par défaut Besoin d'aide formulaire d'édition Symfony2
    Bonjour,

    Je suis actuellement sur un problème assez atypique où je suis vraiment perdu et je n'ai peut etre plus assez de recul pour voir le soucis. Pour faire simple j'utilise fosUserBundle dans la gestion des membres d'un de mes sites et j'ai mis en place un espace membre classique (avec possibilité de modifier différentes options...).
    Cette page d'édition de profil se compose de deux zones (et deux formulaires). L'une pour changer de mot de passe (ancien mdp / nouveau mdp / vérification) et un autre pour la modif d'autres éléments (description du profil, photo de profil etc...)

    Aucun problème pour le premier formulaire, tout se passe bien. Par contre pour le cas du deuxième j'ai tout le temps une erreur assez atypique. En effet quand le formulaire est soumis, il me retourne une erreur comme quoi le champs "password" ne peux pas être vide, alors que celui ci ne fait pas parti du formulaire... J'ai tout essayé (meme reprendre de zéro le code de cette page, supprimé le premier formulaire mais j'en arrive toujours au même endroit).

    Si quelqu'un pouvait jeter un oeil et me donner une piste cela m'aiderai beaucoup,

    Merci d'avance

    Formulaire:
    http://pastebin.com/e9ZmGnV5

    Entity User (qui a pour parent l'entity user de fosuserbundle):
    http://pastebin.com/9dncMG4s

    Action du controller:
    http://pastebin.com/SmZjYfdv

    Un bout de la vue si besoin:
    http://pastebin.com/a9afimb2

    Sincèrement merci a quiconque trouvera un peu de temps pour m'aider, je m'arrache les cheveux a cause de ca depuis un moment -_-...
    Images attachées Images attachées  
    Mon blog technique: www.codeyourweb.org
    HTML5 / CSS3 / JS – Intégration des technologies du web a destination des nouvelles plateformes et nouveaux usages d'internet

  2. #2
    Membre expert
    Avatar de dukoid
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2012
    Messages
    2 100
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2012
    Messages : 2 100
    Points : 3 004
    Points
    3 004
    Par défaut
    Hugh ! c'est la caca la tata la catastrophe.
    bon je dois dire que j'ai la flemme de lire tous tes codes et de chercher l'aiguille dans la botte de foin mais...

    mais si je comprends bien tu as plusieurs formulaires sur une même page, si c'est bien ça respecte tu cela :

    je schématise grossièrement :
    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
    <form1   action="vers action qui va recevoir le form1">
    
    formulaire 1
    submit
    
    </form>
    
    
    <form2   action="vers une autre action qui va recevoir le form2">
    
    formulaire 2
    submit
    
    </form>

  3. #3
    Membre averti
    Avatar de phpiste
    Homme Profil pro
    Développeur Senior
    Inscrit en
    Septembre 2006
    Messages
    251
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Développeur Senior
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2006
    Messages : 251
    Points : 445
    Points
    445
    Billets dans le blog
    7
    Par défaut
    Bonjour,

    Tu utilise le form type par defaut de FOSUser (celui de l'édition du profile) ?
    Je suis Développeur Senior ouvert aux opportunités
    Mon blog

  4. #4
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2005
    Messages
    109
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Service public

    Informations forums :
    Inscription : Décembre 2005
    Messages : 109
    Points : 88
    Points
    88
    Par défaut
    Oui pour schematiser et vous simplifier le travail:
    - le form1 possède un nom et POST sur une route
    - le form2 possède un nom différent et POST sur la même route que celle d'affichage

    - le form1 est celui par défaut de FOSUserBundle (changement de mot de passe)
    - le form2 est crée avec un FormType généré avec les infos optionnelles du profil

    (il n'y a que le form2 qui bug)
    Mon blog technique: www.codeyourweb.org
    HTML5 / CSS3 / JS – Intégration des technologies du web a destination des nouvelles plateformes et nouveaux usages d'internet

  5. #5
    Membre expert
    Avatar de dukoid
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2012
    Messages
    2 100
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2012
    Messages : 2 100
    Points : 3 004
    Points
    3 004
    Par défaut
    u n'as âs vraiment répondu à l question est ce que oui ou non, les 2 form pointent sur la même action ?

  6. #6
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2005
    Messages
    109
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Service public

    Informations forums :
    Inscription : Décembre 2005
    Messages : 109
    Points : 88
    Points
    88
    Par défaut
    non deux routes différentes et deux actions différentes, et en plus deux controlleurs différents
    Mon blog technique: www.codeyourweb.org
    HTML5 / CSS3 / JS – Intégration des technologies du web a destination des nouvelles plateformes et nouveaux usages d'internet

  7. #7
    Membre expert
    Avatar de dukoid
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2012
    Messages
    2 100
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2012
    Messages : 2 100
    Points : 3 004
    Points
    3 004
    Par défaut
    nous allons cerner le problème :

    (1) avec firebug onglet Reseau, regarde la trace de la route(le POST) quand tu valide le formulaire. regarde si 2 formulaires ou un seul est envoyé ?

    ça donne quoi ?



    (2) pour tester, dans ta vue vire ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
            {{ render(controller('WIYUserBundle:ChangePassword:changePasswordInc')) }}
    ça donne quoi ?

  8. #8
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2005
    Messages
    109
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Service public

    Informations forums :
    Inscription : Décembre 2005
    Messages : 109
    Points : 88
    Points
    88
    Par défaut
    - Le premier form envoi vers /profile/changepasswd puis redirige vers /profile (la page d'origine ou sont les deux formulaires)
    - Le second post directement sur la même page que celle d'affichage /profile

    Si j'enlève le premier form (celui que tu as mis dans ta réponse) même problème, il ressort la même erreur de mot de passe qui n'est pas rempli. Etrange aussi, quand je fais un dump($formProfil->getErrors()) le champs errors est un tableau vide -_-

    Pour ce qui est de la trace réseau je suis pas très a l'aise (je suis sur chrome), mais a vu d'oeil seul le 2nd form est posté quand je fais un submit de ce dernier
    Remote Address:127.0.0.1:80
    Request URL:http://127.0.0.1/sporniz/web/app_dev.php/profile/
    Request MethodOST
    Status Code:200 OK
    Request Headersview source
    Accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
    Accept-Encoding:gzip, deflate
    Accept-Language:fr-FR,fr;q=0.8,en-US;q=0.6,en;q=0.4
    Cache-Control:no-cache
    Connection:keep-alive
    Content-Length:784
    Content-Type:multipart/form-data; boundary=----WebKitFormBoundaryYtlS1qIhUGa3B6Mh
    Cookie:_ga=GA1.1.359380102.1434782897; PHPSESSID=06go3sufdku34629lud8kr3434
    Host:127.0.0.1
    Origin:http://127.0.0.1
    Pragma:no-cache
    Referer:http://127.0.0.1/sporniz/web/app_dev.php/profile/
    User-Agent:Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/40.0.2214.94 Safari/537.36
    Request Payload
    ------WebKitFormBoundaryYtlS1qIhUGa3B6Mh
    Content-Disposition: form-data; name="fos_user_profile_show[niveau]"

    Amateur
    ------WebKitFormBoundaryYtlS1qIhUGa3B6Mh
    Content-Disposition: form-data; name="fos_user_profile_show[frequence]"

    régulière (1ou 2 fois/semaine)
    ------WebKitFormBoundaryYtlS1qIhUGa3B6Mh
    Content-Disposition: form-data; name="fos_user_profile_show[description]"

    Test2
    ------WebKitFormBoundaryYtlS1qIhUGa3B6Mh
    Content-Disposition: form-data; name="fos_user_profile_show[profilePictureFile]"; filename=""
    Content-Type: application/octet-stream


    ------WebKitFormBoundaryYtlS1qIhUGa3B6Mh
    Content-Disposition: form-data; name="fos_user_profile_show[_token]"

    3gMrXGfstSPr25V7CMNSbgxpU3NURg4wE3duBEitU2g
    ------WebKitFormBoundaryYtlS1qIhUGa3B6Mh--
    Response Headersview source
    Cache-Control:no-cache
    Connection:Keep-Alive
    Content-Type:text/html; charset=UTF-8
    Date:Mon, 22 Jun 2015 21:19:41 GMT
    Keep-Alive:timeout=5, max=100
    Server:Apache/2.4.7 (Win32) PHP/5.5.8
    Transfer-Encoding:chunked
    X-Debug-Token:1263b1
    X-Debug-Token-Link:/sporniz/web/app_dev.php/_profiler/1263b1
    X-Powered-ByHP/5.5.8
    Mon blog technique: www.codeyourweb.org
    HTML5 / CSS3 / JS – Intégration des technologies du web a destination des nouvelles plateformes et nouveaux usages d'internet

  9. #9
    Membre expert
    Avatar de dukoid
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2012
    Messages
    2 100
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2012
    Messages : 2 100
    Points : 3 004
    Points
    3 004
    Par défaut
    est-ce nécessaire ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
      $resolver->setDefaults(array(
                            'data_class' => 'WIY\UserBundle\Entity\User'
                    ));

  10. #10
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2005
    Messages
    109
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Service public

    Informations forums :
    Inscription : Décembre 2005
    Messages : 109
    Points : 88
    Points
    88
    Par défaut
    Citation Envoyé par dukoid Voir le message
    est-ce nécessaire ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
      $resolver->setDefaults(array(
                            'data_class' => 'WIY\UserBundle\Entity\User'
                    ));
    Non certes, j'ai fait un copié/coller du formulaire d'enregistrement en supprimant les champs que je ne voulais pas rendre éditable (nom/prénom/pseudo...). Je viens de l'enlever à l'instant. Par contre toujours le même problème
    Mon blog technique: www.codeyourweb.org
    HTML5 / CSS3 / JS – Intégration des technologies du web a destination des nouvelles plateformes et nouveaux usages d'internet

  11. #11
    Membre émérite

    Profil pro
    Inscrit en
    Mai 2008
    Messages
    1 576
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 1 576
    Points : 2 440
    Points
    2 440
    Par défaut
    Essaie avec $formProfil->getErrors(true) plutôt si Symfony >= 2.5

  12. #12
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2005
    Messages
    109
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Service public

    Informations forums :
    Inscription : Décembre 2005
    Messages : 109
    Points : 88
    Points
    88
    Par défaut
    Voila pour le dump complet au POST du formulaire en question:
    http://pastebin.com/LaJFS4uF

    Si pas plus d'idée demain je tenterai probablement un truc moche pour le test du style refaire un form depuis le controlleur et voir si l'erreur est identique

    (merci beaucoup pour l'aide en tout cas, même si pour le moment c'est pas concluant j'apprécie sincèrement, ce code me rend fou^^)
    Mon blog technique: www.codeyourweb.org
    HTML5 / CSS3 / JS – Intégration des technologies du web a destination des nouvelles plateformes et nouveaux usages d'internet

  13. #13
    Membre expert
    Avatar de dukoid
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2012
    Messages
    2 100
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2012
    Messages : 2 100
    Points : 3 004
    Points
    3 004
    Par défaut
    à la ligne 178 je vois l'entity User(name, password...), qu'est ce que ça viens faire là ?

    supprime le cache /app/dev

  14. #14
    Membre émérite

    Profil pro
    Inscrit en
    Mai 2008
    Messages
    1 576
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 1 576
    Points : 2 440
    Points
    2 440
    Par défaut
    Et poste le html du form généré par Symfony si la suppression du cache ne règle pas le problème :-)

  15. #15
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2005
    Messages
    109
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Service public

    Informations forums :
    Inscription : Décembre 2005
    Messages : 109
    Points : 88
    Points
    88
    Par défaut
    Bon je désespère. J'ai tout tenté:
    - cache:clear ainsi que les différentes options du cache de doctrine
    - suppression du FormType et regénération (php app/console doctrine:generate:form), puis remise en place de mes différents champs
    - création de la vue la plus simple possible a savoir:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <html>
    <head></head>
    <body>
    {{form(formProfil)}}
    </body>
    </html>
    Résultat: "Please enter a password" -_-
    Mon blog technique: www.codeyourweb.org
    HTML5 / CSS3 / JS – Intégration des technologies du web a destination des nouvelles plateformes et nouveaux usages d'internet

  16. #16
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2005
    Messages
    109
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Service public

    Informations forums :
    Inscription : Décembre 2005
    Messages : 109
    Points : 88
    Points
    88
    Par défaut
    Du coup en faisant tout ca et en vous écrivant je viens de comprendre mon soucis -_-
    J'ai un fichier validation.yml pour mes champs form qui faisait le bazar... Ma question va etre simple du coup car je n'en ai absolument aucune idée... Comment faire en sorte que la validation ne se fasse que sur mon formulaire (FormRegistrationType) et pas le second... Merci d'avance a vous, et désolé de vous avoir fait vous creuser la tête sur un élément aussi pourri...:

    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
    21
    22
    WIY\UserBundle\Entity\User:
        properties:
            username:
                - Length:
                    min: 3
                    max: 32
                    minMessage: "Votre pseudo doit contenir au minimum {{ limit }} caractères."
                    maxMessage: "Votre pseudo est trop long"
                - NotBlank:
                    message: "Merci de rentrer un pseudo"
                - Regex:
                    pattern: "/[a-z]{1}[a-z0-9]+/i"
                    message: Votre pseudo ne doit contenir que des lettres sans accents et des chiffres et commencer par une lettre.
     
            plainPassword:
                - NotBlank:
                    message: "Please enter a password"
                - Length:
                    min: 5
                    max: 32
                    minMessage: "Votre mot de passe doit contenir au minimum {{ limit }} caractères."
                    maxMessage: "Le mot de passe est trop long"
    Mon blog technique: www.codeyourweb.org
    HTML5 / CSS3 / JS – Intégration des technologies du web a destination des nouvelles plateformes et nouveaux usages d'internet

  17. #17
    Membre émérite

    Profil pro
    Inscrit en
    Mai 2008
    Messages
    1 576
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 1 576
    Points : 2 440
    Points
    2 440

  18. #18
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2005
    Messages
    109
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Service public

    Informations forums :
    Inscription : Décembre 2005
    Messages : 109
    Points : 88
    Points
    88
    Par défaut
    Effectivement j'ai déja entendu parler de cet élément sur les groupes de validations. J'ai juste un petit problème sur la syntaxe a mon avis (erreur retournée trim() expect element to be string not an array...

    Les exemples sont plutôt limité dans la doc, est t'il possible d'avoir un éclairage sur ce que je fais mal dans ce snippet?

    Merci d'avance.

    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
    21
    22
    23
     
    WIY\UserBundle\Entity\User:
        properties:
            username:
                - Length: { groups: [Registration] }
                    min: 3
                    max: 32
                    minMessage: "Votre pseudo doit contenir au minimum {{ limit }} caractères."
                    maxMessage: "Votre pseudo est trop long"
                - NotBlank:
                    message: "Merci de rentrer un pseudo"
                - Regex:
                    pattern: "/[a-z]{1}[a-z0-9]+/i"
                    message: Votre pseudo ne doit contenir que des lettres sans accents et des chiffres et commencer par une lettre.
     
            plainPassword:
                - NotBlank: { groups: [Registration] }
                    message: "Please enter a password"
                - Length: { groups: [Registration] }
                    min: 5
                    max: 32
                    minMessage: "Votre mot de passe doit contenir au minimum {{ limit }} caractères."
                    maxMessage: "Le mot de passe est trop long"
    Mon blog technique: www.codeyourweb.org
    HTML5 / CSS3 / JS – Intégration des technologies du web a destination des nouvelles plateformes et nouveaux usages d'internet

  19. #19
    Membre émérite

    Profil pro
    Inscrit en
    Mai 2008
    Messages
    1 576
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 1 576
    Points : 2 440
    Points
    2 440
    Par défaut
    Essaie ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    username:
        - Length:
               groups: [Registration]
               min: 3
               max: 32
               minMessage: "Votre pseudo doit contenir au minimum {{ limit }} caractères."
               maxMessage: "Votre pseudo est trop long" }
    Pareil pour les 2 entrées de plainPassword

  20. #20
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2005
    Messages
    109
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Service public

    Informations forums :
    Inscription : Décembre 2005
    Messages : 109
    Points : 88
    Points
    88
    Par défaut
    Impeccable, tout semble marcher comme il faut

    Merci sincèrement pour cette aide!
    Mon blog technique: www.codeyourweb.org
    HTML5 / CSS3 / JS – Intégration des technologies du web a destination des nouvelles plateformes et nouveaux usages d'internet

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Besoin d'aide formulaire de contact
    Par bsteeve dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 02/02/2011, 17h41
  2. Réponses: 2
    Dernier message: 12/07/2010, 15h28
  3. [MySQL] Besoin d'aide formulaire devis express
    Par clubertonight dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 22/01/2009, 21h19
  4. [VBA-E] besoin d'aide excel et formulaire
    Par lolo_the_fripouille dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 01/04/2006, 07h11
  5. besoin d'aide sur un formulaire
    Par Atchoum_002 dans le forum Langage
    Réponses: 6
    Dernier message: 06/10/2005, 14h04

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