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 :

Champ select formulaire symfony [2.x]


Sujet :

Symfony PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Avril 2013
    Messages
    161
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2013
    Messages : 161
    Par défaut Champ select formulaire symfony
    Bonjour à tous,

    Je viens chercher de l'aide sur l'utilisation d'un champ select en symfony.
    J'utilise la version symfony 2.8.3 et php7.0.0. Je travaille sur Mac.

    En effet, j'aimerai traduire une page de mon site (page d'accueil par exemple). Je souhaite utiliser un champ select de formulaire qui me permet d'afficher mes choix de langue (FR, EN).
    J'aimerais mettre des liens dans mes options pour que quand je choisis une langue qu'il me redirige vers la page langue.html.twig par exemple.

    J'ai essayé de faire ceci avec un simple formulaire dans mon fichier Twig:

    TWIG:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
         <form action="" method="post">
              <select>
                   <option value-"{{ path('myapp_choisir_langue', {'langue' : 'fr'}) }}">FR</option>
                   <option value-"{{ path('myapp_choisir_langue', {'langue' : 'fr'}) }}">EN</option>
              </select>
         </form>
    J'ai deux questions :
    - la première : c'est de savoir si mon formulaire est correcte?
    - la deuxième : comment utiliser les forms symfony avec l'attribut (entity ou choice) pour afficher mon formulaire select avec mes options renvoyant vers mes liens?

    J'ai d'autres questions mais d'abord je souhaiterais résoudre ces deux là en premier.

    Merci par avance !

    Cdlt,

  2. #2
    Membre extrêmement actif
    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
    Par défaut
    (1) déjà, je pense que si ton formulaire ne fait rien d'autres que diriger vers d'autres pages tu peux laisser comme ça.
    en effet, un formulaire Symfony est utile pour la validation, pour l'enregistrement en base...

    la balise form ne sert à rien
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
              <select>
                   <option value="{{ path('myapp_choisir_langue', {'langue' : 'fr'}) }}">FR</option>
                   <option value="{{ path('myapp_choisir_langue', {'langue' : 'en'}) }}">EN</option>
              </select>
    et tu as besoin d'un peu de jQuery ou javaScript pour detecter le changement de valeur sur le select et rediriger vers l'url de value

    (2) tu pourrais faire un formulaire avec un select FR, EN ( mais tu n'as pas besoin d'entité)

    tu récupère le choix de ton select dans une action du controlleur.
    et en fonction du choix fr ou en, tu redirige vers tel ou tel url....

  3. #3
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Avril 2013
    Messages
    161
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2013
    Messages : 161
    Par défaut
    Bonjour Dukoid,

    Je te remercie pour ta réponse. Je ferai des modifications et en cas de besoin je reviendrai vers toi.
    J'ai pris note de tout ce que tu m'avais dit.

    Cdlt,

  4. #4
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Avril 2013
    Messages
    161
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2013
    Messages : 161
    Par défaut
    Bonjour Dukoid,

    Je reviens vers toi pour que tu m'expliques comment récupérer le choix de mon select dans l'action de mon controlleur en fonction du choix fr ou en.
    J'utilise le bundle JMSI18nRoutingBundle pour récupérer automatique mes locales dans les routes. Je suis bloqué quand qu'il s'agit de choisir dans mon select le l'option fr ou en et que ma page change automatique.

    Merci par avance.

    Cdlt,

  5. #5
    Membre extrêmement actif
    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
    Par défaut
    vu que tu as choisis la solution 2 :

    dans une action, tu dois créer un formulaire que tu passes à la vue
    dans la vue tu affiches le formulaire
    au submit tu envois le resultat à une action qui va lire le formulaire et en fonction du choix rediriger vers tel ou tel endroit.

    regarde la doc symfony, formulaire sans entité

  6. #6
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Avril 2013
    Messages
    161
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2013
    Messages : 161
    Par défaut
    Rebonjour,

    Merci Dukoid de ta réponse.
    J'ai procédé de cette manière (ci-dessous mon code). Normalement si je choisi une de mes option dans mon champ select ça devrait changer de langue.
    Mais pour l'instant ça ne fonctionne pas.

    Mes fichiers :

    # app/Resources/views/navbar.html.twig

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
           <select class="btn btn-default dropdown-toggle blue-kidscode">
                  {% if (app.request.getLocale()) == 'fr' %}
                  <option value="#" class="active">FR</option>
                  <option value="{{ path(app.request.get('_route'), app.request.get('_route_params')|merge({'_locale': 'en'})) }}">EN</option>
                  {% endif %}
                  {% if (app.request.getLocale()) == 'en' %}
                  <option value="{{ path(app.request.get('_route'), app.request.get('_route_params')|merge({'_locale': 'fr'})) }}">FR</option>
                  <option value="#" class="active">EN</option>
                  {% endif %}
           </select>
    # app/config/config.yml

    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
     
      # Put parameters here that don't need to change on each machine where the app is deployed
     # http://symfony.com/doc/current/best_practices/configuration.html#application-related-configuration
     
     parameters:
        locale: fr
        locale: en
     
     framework:
         #esi:             ~
         #translator:      { fallbacks: ["%locale%"] }
         translator:      { fallbacks: ["%locale%"] }
         secret:          "%secret%"
         router:
             resource: "%kernel.root_dir%/config/routing.yml"
    # src/MainBundle/Resources/config/routing.yml

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
        re_main:
           path:     /site
           path:     /{_locale}/site
           defaults: { _controller: MainBundle:Default:index }
           requirements:
            _locale: fr|en
    Et mes deux fichiers messages(.xlf):

    # app/Resources/translations/messages.fr.xlf

    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
    24
    25
    26
    27
     
    <?xml version="1.0" encoding="utf-8"?>
    <xliff xmlns="urn:oasis:names:tc:xliff:document:1.2" version="1.2">
      <file source-language="en" target-language="fr" datatype="plaintext" original="file.ext">
        <header>
          <tool tool-id="symfony" tool-name="Symfony"/>
        </header>
        <body>
          <trans-unit id="7e02f91689d97c04d34f91d4f3517136" resname="menu.accueil">
            <source>menu.accueil</source>
            <target>accueil</target>
          </trans-unit>
          <trans-unit id="82040cdd46bd9994e97df749e999e059" resname="menu.education">
            <source>menu.education</source>
            <target>éducation par le jeu</target>
          </trans-unit>
          <trans-unit id="4a2b84acdbfedca1cbfba868be03bdf3" resname="menu.cours">
            <source>menu.cours</source>
            <target>cours en ligne</target>
          </trans-unit>
          <trans-unit id="03fa763e319ee756f1e1a54c97d2bfce" resname="menu.equipe">
            <source>menu.equipe</source>
            <target>notre équipe</target>
          </trans-unit>
        </body>
      </file>
    </xliff>
    # app/Resources/translations/messages.en.xlf

    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
    24
    25
    26
    27
     
    <?xml version="1.0" encoding="utf-8"?>
    <xliff xmlns="urn:oasis:names:tc:xliff:document:1.2" version="1.2">
      <file source-language="en" target-language="en" datatype="plaintext" original="file.ext">
        <header>
          <tool tool-id="symfony" tool-name="Symfony"/>
        </header>
        <body>
          <trans-unit id="7e02f91689d97c04d34f91d4f3517136" resname="menu.accueil">
            <source>menu.accueil</source>
            <target>Home</target>
          </trans-unit>
          <trans-unit id="82040cdd46bd9994e97df749e999e059" resname="menu.education">
            <source>menu.education</source>
            <target>Education by game</target>
          </trans-unit>
          <trans-unit id="4a2b84acdbfedca1cbfba868be03bdf3" resname="menu.cours">
            <source>menu.cours</source>
            <target>Online courses</target>
          </trans-unit>
          <trans-unit id="03fa763e319ee756f1e1a54c97d2bfce" resname="menu.equipe">
            <source>menu.equipe</source>
            <target>Our team</target>
          </trans-unit>
        </body>
      </file>
    </xliff>

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

Discussions similaires

  1. plusieurs champs select formulaire
    Par serna dans le forum Langage
    Réponses: 19
    Dernier message: 27/01/2010, 17h36
  2. Modification d'un champ select dans un formulaire
    Par bachboucha dans le forum Langage
    Réponses: 3
    Dernier message: 06/05/2009, 15h46
  3. Réponses: 2
    Dernier message: 16/04/2009, 11h00
  4. [MySQL] Mettre un champ selected dans un formulaire de type select
    Par bl4ckwolf dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 19/07/2007, 16h11
  5. [Formulaires] Mise en forme champs <select>
    Par zakuli dans le forum Balisage (X)HTML et validation W3C
    Réponses: 9
    Dernier message: 29/11/2006, 07h36

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