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 :

Validation de formulaire avant soumission


Sujet :

Symfony PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Juin 2015
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Juin 2015
    Messages : 7
    Par défaut Validation de formulaire avant soumission
    Bonjour,

    je souhaite qu'un formulaire puisse afficher les erreurs liées à chaque champ avant que la soumission du formulaire ait eu lieu.

    De coutume, l'utilisateur clique sur le lien amenant sur la page d'édition, modifie ou pas les données, valide le formulaire et si des erreurs ont lieu (des contraintes appliquées aux champs de l'entité n'ont pas été respectées), l'utilisateur se retrouve à nouveau sur le formulaire d'édition et les erreurs sont affichées à côté des champs à l'aide de Twig :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    {{ form_errors(form.fieldName) }}
    Je souhaite que la validation des champs ait lieu au chargement de la page (et pas seulement après soumission du formulaireà, et que les erreurs puissent être affichées à côté de leur champ respectif, avant même que le formulaire soit validé. Je souhaite gérer ceci en PHP, à l'aide du form et de l'entity.

    J'ai tenté de m'inspirer de cette entrée du cookbook, en écrivant ceci dans le controller :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $form = $this->container->get('form.factory')->create(new MyEntityType, $myEntity);
    $form->submit($request->request->get($form->getName()));
    if ($form->isValid()) {
    	...
    }
    Mais les champs du formulaire ne sont pas remplis avec les données de l'entité : tous les champs sont vides.
    J'ai essayé de remplacer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $request->request->get($form->getName())
    par , mais cela déclenche une exception,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $myEntity cannot be used as an array in Symfony/Component/Form/Extension/Csrf/EventListener/CsrfValidationListener.php
    Quelqu'un sait-il comment nourrir le formulaire avec les données d'une entité et déclencher la validation, sans que la soumission du formulaire soit nécessaire ?

    Merci par avance pour vos réponses.

  2. #2
    Membre confirmé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juillet 2014
    Messages
    78
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juillet 2014
    Messages : 78
    Par défaut
    Salut

    Est ce que tu es sur que c'est possible de le faire avec symfony ?

    J'ai déja fait ce type de validation dans un de mes projet, j'ai utilisé jquery.
    En gros toutes les 500 millisecondes je check les inputs et si les valeurs qu'ils contiennent ne sont pas correctes j'affiche un message et je colore le contour en rouge.

  3. #3
    Membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Juin 2015
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Juin 2015
    Messages : 7
    Par défaut
    Je ne sais pas s'il est possible de le faire avec Symfony, effectivement. C'est bien pour ça que je rencontre des difficultés. Mais je me dis que c'est forcément possible : ça a lieu, lorsque quelqu'un valide le formulaire. Il suffit je pense de trouver le code qui est déclenché par le framework, et, au pire, reproduire dans le controller les appels aux bonnes fonctions.
    Mais je me casse les dents dessus jusque là, c'est pour ça que je me demande si quelqu'un s'est déjà posé la question.

  4. #4
    Membre confirmé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juillet 2014
    Messages
    78
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juillet 2014
    Messages : 78
    Par défaut
    Oui mais ces actions sont exécutés dans le contrôleur et sont déclenchés au click d'un bouton, alors que toi tu voudrais que cette validation se fasse sans rechargement de page donc sans JS ca me semble impossible.

    Tu pourrait tester ma méthode si tu veux je peux te passer un bout de code pour que tu vois.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2013
    Messages
    68
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2013
    Messages : 68
    Par défaut
    Hello,

    Comme dit Pifon, sans JS pas de validation coté client. Symfone est un framework serveur.
    Mais tu n'es pas obligé de te casser la tête à tous faire de 0. Il y a des bundles qui existent. J'ai pris le premier au hasard : https://github.com/formapro/JsFormValidatorBundle

  6. #6
    Membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Juin 2015
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Juin 2015
    Messages : 7
    Par défaut
    Alors ce n'est pas de la validation côté client que je souhaite réaliser. J'ai dû mal m'expliquer.

    Je retente en reformulant.

    J'ai une classe de formulaire, associée à une entité, pour la création. J'ai une autre classe de formulaire, elle aussi associée à la même entité, pour l'édition.
    Je souhaite afficher une page où les données déjà existantes, en base de données, de l'entité puissent être confrontées aux contraintes de validation et que je puisse afficher le formulaire d'édition (avec certains champs déjà remplis, l'entité étant déjà existante) avec également les erreurs de validation. Le tout au chargement direct d'une page, en GET.

    Car, après qu'un utilisateur clique sur un bouton pour valider un formulaire, on arrive sur un controller qui déclenche la validation. Mais cela n'est pas en lien avec le fait d'avoir cliqué sur un bouton, ou ailleurs, il s'agit juste de méthodes qui s'appelle les unes les autres dans le controller qui déclenche la validation. Symfony 2 semble déclencher cette suite d'appels lorsqu'il s'aperçoit que le bouton submit est pressé. Moi j'aimerai pouvoir déclencher cette suite d'appel "manuellement" donc.

Discussions similaires

  1. Réponses: 1
    Dernier message: 13/08/2013, 23h24
  2. [Prototype] Valider un formulaire avant de lancer connexion
    Par amarcil dans le forum Bibliothèques & Frameworks
    Réponses: 2
    Dernier message: 17/07/2008, 20h21
  3. Réponses: 2
    Dernier message: 26/07/2007, 10h41
  4. [Formulaire]valider un enregistrement avant access
    Par robocop2776 dans le forum IHM
    Réponses: 9
    Dernier message: 24/04/2007, 07h15
  5. formulaire et concaténation type="text" avant soumission
    Par jakouz dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 22/04/2006, 10h39

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