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 :

msdropdown at symfony [2.x]


Sujet :

Symfony PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert
    Avatar de pmithrandir
    Homme Profil pro
    Responsable d'équipe développement
    Inscrit en
    Mai 2004
    Messages
    2 419
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Responsable d'équipe développement
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 2 419
    Par défaut msdropdown at symfony
    Bonjour

    J'ai un formulaire généré par symfony dans mon site(page de création d'une idée).

    J'ai donc mis ca :
    Pour ajouter un lect qui m'affiche le thème.

    Ca me génère le code suivant :
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    <select required="required" name="jaiuneidee_sitebundle_ideetype[theme]" id="jaiuneidee_sitebundle_ideetype_theme">
    <option value="56">Culture</option>
    <option value="57">Ecologie</option>
    <option value="58">Economie</option>
    <option value="66">Education</option>
    <option value="60">Immigration</option>
    <option value="59">Logement</option>
    <option value="62">Sécurité</option>
    <option value="64">Sport et Loisirs</option>
    <option value="63">Système Politique</option>
    <option value="67">Transports</option>
    <option value="61">Urbanisme</option>
    <option value="68">Vivre ensemble</option>
    <option value="65">Autre</option>
    </select>


    mais j'aimerai obtenir ca :
    Code html : 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
    <select onchange="" class="theme" name="theme" id="msdrpdd20" tabindex="-1">
        <option value="all">-- Thème --</option>
        <option value="56" data-image="/images/themes/culture.png">Culture</option>
        <option value="57" data-image="/images/themes/ecologie.png">Ecologie</option>
        <option value="58" data-image="/images/themes/economie.png">Economie</option>
        <option value="66" data-image="/images/themes/education.png">Education</option>
        <option value="60" data-image="/images/themes/immigration.png">Immigration</option>
        <option value="59" data-image="/images/themes/logement.png">Logement</option>
        <option value="62" data-image="/images/themes/sécurité.png">Sécurité</option>
        <option value="64" data-image="/images/themes/sport et loisirs.png">Sport et Loisirs</option>
        <option value="63" data-image="/images/themes/système politique.png">Système Politique</option>
        <option value="67" data-image="/images/themes/transports.png">Transports</option>
        <option value="61" data-image="/images/themes/urbanisme.png">Urbanisme</option>
        <option value="68" data-image="/images/themes/vivre ensemble.png">Vivre ensemble</option>
        <option value="65" data-image="/images/themes/autre.png">Autre</option>
    </select>

    Est-ce que vous savez comment ajouter data-image dans chaque élément option ?

    Merci,
    Pierre

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

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

    au niveau de twig les choix sont un tableau d'objet ChoiceView, lesquel ont 3 attributs: value, label et data.
    c'est l'attribut data qui va renvoyer ton entité,
    https://github.com/symfony/symfony/b...ChoiceView.php

    On peut utiliser le form theming pour redéfinir un widget en particulier:
    http://symfony.com/fr/doc/current/co...omization.html

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    {%block _my_form_my_select_widget %}
         <select {{ block('widget_attributes') }}>
                <option value=""></option>
    	    {%for choice in choices%}
                     <option value="{{ choice.value }}" 
    			    {% if choice is selectedchoice(value) %} selected="selected"{% endif %}
                                data-image="{{choice.data.image}}">
    		{{ choice.label|trans({}, translation_domain) }}
                     </option>
    	{%endfor%}
           </select>
    {%endblock%}

  3. #3
    Membre Expert
    Avatar de pmithrandir
    Homme Profil pro
    Responsable d'équipe développement
    Inscrit en
    Mai 2004
    Messages
    2 419
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Responsable d'équipe développement
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 2 419
    Par défaut
    Bonjour,

    Donc ici, je fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    {%block _form_theme_widget %}
    C'est ca ?

    Je retrouve des mécanisme d'un bundle que j'ai utilisé. Je vais voir ca ce soir.
    Merci,
    Pierre

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

    Informations forums :
    Inscription : Juin 2011
    Messages : 725
    Par défaut
    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
     
    {%extends 'layout.html.twig'%}
     
    {# ici on déclare que les blocks des formulaires peuvent être redéfinis par des blocks déclarés dans la page #}
    {# le form que l'on veut personaliser dans twig s'appelle "my_form"#}
    {% form_theme my_form _self %}
     
    {#le block que l'on veut personaliser a pour id (au sens html) "my_form_my_select"  #}
    {# Attention ce block doit être défini en dehors de tout autre block, #}
    {# en fait on ne peut utiliser cette technique que pour des templates héritant d une autre template #}
    {%block _my_form_my_select%}
    ...
    {%endblock%}
     
    {%block container%}
    {#ici le contenu principal de la page, la template "layout.html.twig" a donc un block "container" #}
     
    {{form( my_form )}}
    {%enblock%}

  5. #5
    Membre Expert
    Avatar de pmithrandir
    Homme Profil pro
    Responsable d'équipe développement
    Inscrit en
    Mai 2004
    Messages
    2 419
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Responsable d'équipe développement
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 2 419
    Par défaut
    Hello,

    Merci pour le lien.
    j'ai un peu galéré, mais avec les exemples que tu m'a donné, j'ai finalement réusi a faire le lien et a trouver l'identifiant correct.

    Ca donne ca :
    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
     
    {% form_theme form _self %}
    {%block _jaiuneidee_sitebundle_ideetype_theme_widget %}
        <select {{ block('widget_attributes') }} class="theme">
                <option value="">-- Thème --</option>
    	    {%for choice in choices%}
                     <option value="{{ choice.value }}" 
    			    {% if choice is selectedchoice(value) %} selected="selected"{% endif %}
                                data-image="/images/themes/{{choice.label|lower}}.png">
    		{{ choice.label|trans({}, translation_domain) }}
                     </option>
    	{%endfor%}
           </select>
    {%endblock%}
    {% block title %}Créer une nouvelle idée{% endblock%}
     
    {% block mainCol %}
        <form action="{{ path('JaiUneIdeeSiteBundle_idee_create') }}" method="post" {{ form_enctype(form) }} class="form">
        	    <h1>Création d'une nouvelle idée</h1>
    	      {{ form_widget(form) }}
     
    ...
    Merci,
    pierre

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

Discussions similaires

  1. [1.x] symfony - Plusieurs projets
    Par mrjulien dans le forum Symfony
    Réponses: 3
    Dernier message: 12/09/2009, 21h46
  2. [1.x] Tutoriel pour symfony
    Par cjoly dans le forum Symfony
    Réponses: 7
    Dernier message: 19/07/2007, 19h03
  3. [1.x] Absolute beginner symfony
    Par Fugugirl dans le forum Symfony
    Réponses: 2
    Dernier message: 21/06/2007, 20h08
  4. [1.x] Problème installation symfony
    Par Nout dans le forum Symfony
    Réponses: 3
    Dernier message: 27/05/2007, 22h26

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