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 :

[Form] Deux boutons action dans le même formulaire [Débutant(e)] [2.x]


Sujet :

Symfony PHP

  1. #1
    Membre régulier
    Inscrit en
    Février 2004
    Messages
    206
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 206
    Points : 74
    Points
    74
    Par défaut [Form] Deux boutons action dans le même formulaire
    Bonjour,

    pour apprendre à maîtriser Symfony j'essaye de comprendre le fonctionnement des formulaires. Dans mon cas je voudrais utiliser deux boutons Enregistrer et Modifier.

    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
     
    <form  action="{{ path('udc_client_ajouter')}}" method="post" {{ form_enctype(form) }}>
     
       {{ form_errors(form) }}
     
       <div>
          {{ form_label(form.nom, "Nom du client") }}
          {{ form_errors(form.nom) }}
          {{ form_widget(form.nom) }}
       </div>
     
       <div>
          {{ form_label(form.prenom, "Prénom du client") }}
          {{ form_errors(form.prenom) }}
          {{ form_widget(form.prenom) }}
       </div>
     
      <input type="submit"  value="Enregistrer"  class="btn btn-primary" /> 
      <input type="submit"  value="Modifier"     class="btn btn-primary" /> 
    </form>
    .

    Bien dans ce cas, les deux boutons vont à "'udc_client_ajouter'" puisque j'ai au début action="{{ path('udc_client_ajouter')}}"
    Quelqu'un peut m'indiquer une direction? merci

  2. #2
    Membre habitué Avatar de anta_res
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2006
    Messages
    93
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2006
    Messages : 93
    Points : 173
    Points
    173
    Par défaut
    A part gérer la soumission de ton form par du javascript je vois pas comment faire.

  3. #3
    Membre régulier
    Inscrit en
    Février 2004
    Messages
    206
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 206
    Points : 74
    Points
    74
    Par défaut
    j'ai trouvé ça mais je n'ai pas tout compris
    http://www.developpez.net/forums/d12...ns-formulaire/

  4. #4
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2008
    Messages
    1 051
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Hautes Pyrénées (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 051
    Points : 1 638
    Points
    1 638
    Par défaut
    Je suis débutant sur Symfony aussi et c'est une bonne question.

    Tu as deux boutons, avec chacun une propriété 'name'.

    Je pense qu'il te faut une action générique (ni ajouter ni modifier), du genre "traiterFom", qui va récupérer le bouton qui a été appuyé (soit le bouton ajouter, soit le bouton modifier). Ca tu peux le savoir vu que tu auras une requête de type 'POST', juste à vérifier quel bouton n'est pas vide (!empty ou isset). Ensuite en fonction de ça, tu rediriges vers la bonne action / méthode de ton controller (ajouter ou modifier).

    J'espère avoir pu t'aiguiller.

    edit : bon en fait c'est ce qu'il propose dans ton lien. Si tu vois toujours pas, j'essaierais d'être plus clair.

    edit 2 : Biensûr il te faut une route qui pointera vers cette action générique.

  5. #5
    Membre éclairé

    Profil pro
    Inscrit en
    Juin 2004
    Messages
    772
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Juin 2004
    Messages : 772
    Points : 872
    Points
    872
    Par défaut
    Il faut que tu mettes des attributs name sur tes submit. Et dans le contrôleur qui traite le formulaire, tu testes la valeur du champ :

    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
     
    <form  action="{{ path('udc_client_ajouter')}}" method="post" {{ form_enctype(form) }}>
     
       {{ form_errors(form) }}
     
       <div>
          {{ form_label(form.nom, "Nom du client") }}
          {{ form_errors(form.nom) }}
          {{ form_widget(form.nom) }}
       </div>
     
       <div>
          {{ form_label(form.prenom, "Prénom du client") }}
          {{ form_errors(form.prenom) }}
          {{ form_widget(form.prenom) }}
       </div>
     
      <button type="submit" name="submitAction"  value="enregistrer"  class="btn btn-primary">Enregistrer</button> 
      <button type="submit" name="submitAction"  value="modifier" class="btn btn-primary">Modifier</button>
    </form>
    et côté PHP :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    if ($this->getRequest()->request->get('submitAction') == 'enregistrer')
    {
        // traitement Enregistrer
    }
    elseif ($this->getRequest()->request->get('submitAction') == 'enregistrer')
    {
        // traitement Modifier
    }

  6. #6
    Membre régulier
    Inscrit en
    Février 2004
    Messages
    206
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 206
    Points : 74
    Points
    74
    Par défaut
    Merci ça marche très bien.
    Simple curiosité et si tu peux me répondre. Dans le lien que je cite plus haut,
    il parle d'un test effectué comme ça dans le formulaire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <form action="{% if ??? %}{{ path('validateGTDossier') }}{% else %}{{ path('saveGTDossier') }}{% endif %}" method="post" >
    Selon toi est-ce possible et si oui par quoi remplacer les ??? après le if?

    Par un request.quelque chose?

    En tout cas merci

  7. #7
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2008
    Messages
    1 051
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Hautes Pyrénées (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 051
    Points : 1 638
    Points
    1 638
    Par défaut
    ET juste en dessous c'est marquer que ce n'est pas possible côté twig. Ca voudrait dire que, sur une déclaration HTML (à la base), tu veux y mettre une condition, pas envisageable ..

    Par contre, comme dit dans le premier POST, si tu veux pas utiliser la route générique, tu peux utiliser javascript.

    Tu ajoute un onClick sur ton action ( à la place de la route actuelle ), avec en paramètre ton submit. Dans la fonction javascript appelée, tu vérifie quel traitement et tu rediriges vers ta route.

  8. #8
    Membre régulier
    Inscrit en
    Février 2004
    Messages
    206
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 206
    Points : 74
    Points
    74
    Par défaut
    j'ai essayé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <form action="{% if request.action1 %}{{ path('udc_client_ajouter') }} {% else %} {{ path('udc_client_modifier') }}" method="post" {{ form_enctype(form) }}>
    mais j'ai le message Unexpected end of template in UdcClientBundle:Client:formulaire.html.twig at line 9

  9. #9
    Membre régulier
    Inscrit en
    Février 2004
    Messages
    206
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 206
    Points : 74
    Points
    74
    Par défaut
    Merci beaucoup ta solution marche parfaitement !!!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 16/11/2013, 19h36
  2. Réponses: 21
    Dernier message: 16/05/2012, 10h54
  3. [PHP 5.0] Deux boutons "submit" dans un même formulaire
    Par cyrilherve dans le forum Langage
    Réponses: 2
    Dernier message: 19/03/2009, 14h08
  4. Réponses: 3
    Dernier message: 10/10/2008, 18h43
  5. plusieurs boutons submit dans le même formulaire
    Par rogerio dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 04/05/2007, 13h53

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