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 :

Placeholder différent pour un même champ de texte


Sujet :

Symfony PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    236
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2014
    Messages : 236
    Par défaut Placeholder différent pour un même champ de texte
    Bonjour,

    Je souhaite donner des placeholder différents pour un même champs de texte qui apparait sur différents formulaire dans la même page :

    Nom : Capture.PNG
Affichages : 916
Taille : 58,0 Ko

    Ma vue en Twig :

    _ad.html.twig

    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
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    <div class="field">
        <div>{{ form_widget(ad.brand) }}</div>
     
        {{ form_errors(ad.brand) }}
    </div>
    <div class="field">
        <div class="custom-select">{{ form_widget(ad.model) }}</div>
        {{ form_errors(ad.model) }}
    </div>
    {% if ad.price is defined %}
        <div class="field ad-price cf">
            {{ form_widget(ad.price, {'attr' : {'placeholder': placeholder|default('crm.ad.price')} }) }}
            {{ form_errors(ad.price) }}
        </div>
    {% endif %}
    <div class="field ad-km cf">
        {{ form_widget(ad.kilometers) }}
        {{ form_errors(ad.kilometers) }}
    </div>
    <div class="field ad-license cf">
        {{ form_widget(ad.licensePlate) }}
        {{ form_errors(ad.licensePlate) }}
    </div>
    <div class="field ad-fuel">
        <div class="custom-select">{{ form_widget(ad.fuel) }}</div>
        {{ form_errors(ad.fuel) }}
    </div>
    <div class="field ad-gearbox">
        <div class="custom-select">{{ form_widget(ad.gearbox) }}</div>
        {{ form_errors(ad.gearbox) }}
    </div>
    <div class="field ad-reference">
        {{ form_widget(ad.reference) }}
        {{ form_errors(ad.reference) }}
    </div>
    <div class="field ads-links">
        {{ form_widget(ad.link) }}
        {{ form_errors(ad.link) }}
    </div>
     
    {% if pvo is defined %}
        <!-- a href="#" class="searchPvo button icon-search"> Rechercher</a>
        <div class="field pvo">
            <div class="custom-select" {% if ad.vehiculePvo is null %}style="display:none" {% endif %}>{{ form_widget(ad.vehiculePvo) }}</div>
            {{ form_errors(ad.vehiculePvo) }}
        </div -->
    {% endif %}
     
    {% if ad.vars.value is not null and ad.vars.value.link != '' %}
        <a href="{{ ad.vars.value.link }}" target="_blank" class="link">{{ ad.vars.value.link }}</a>
    {% endif %}
    Le formulaire plus haut est appelé plusieurs fois dans une autre vue Twig, pour chaque univers, j'ai une div qui englobe ceci :

    _form.html.twig
    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
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
            <!--div id="universAtelierEtAutre" -->
                <div id="universAtelier" class="univers" {% if lead.interest is not null and lead.interest.code != 'atelier' %}style="display: none"{% endif %}>
                    <h4><span class="custom-radio interest-id">{{ form_widget( form.interest[40], {'attr' : {'class' : 'radio-univers'}} ) }}<label for="{{ formName|default('lead') }}_interest_40">{{ 'crm.menu.repair'|trans }}</label></span></h4>
                    <div class="fields">
     
                        <div class="field">
                            <div class="custom-select">{{ form_widget(form.AtelierLead.atelierType) }}</div>
                            {{ form_errors(form.AtelierLead.atelierType) }}
                        </div>
                        <div id="adsList2" class="collection-list cf workshop">
                            <div class="ads cf" data-prototype="{% filter escape %}{% include 'CarvivoCrmBundle:Ad:_ad.html.twig' with {'ad': form.AtelierLead.ads.vars.prototype} %}{% endfilter %}">
                                {% for ad in form.AtelierLead.ads %}
                                    <div class="collection-item ad cf">{% include 'CarvivoCrmBundle:Ad:_ad.html.twig' with {'ad': ad} %}</div>
                                {% endfor %}
                                <div style="display:none">{{ form_row(form.AtelierLead.ads) }}</div>
                            </div>
                        </div>
                    </div>
                    <div class="fields">
     
                        <div class="field">
                            <div class="custom-select">{{ form_widget(form.AtelierLead.appointmentType) }}</div>
                            {{ form_errors(form.AtelierLead.appointmentType) }}
                        </div>
     
                        <div class="field checkbox">
                            {{ form_widget(form.AtelierLead.urgent) }}
                            {{ form_label(form.AtelierLead.urgent) }}
                            {{ form_errors(form.AtelierLead.urgent) }}
                        </div>
     
                        <div id="datesList" class="collection-list cf">
                            <div class="dates cf" data-prototype="{% filter escape %}{% include 'CarvivoCrmBundle:Operator/Lead:_appointmentDate.html.twig' with {'appointmentDate': form.AtelierLead.appointmentDates.vars.prototype} %}{% endfilter %}">
                                {% for appointmentDate in form.AtelierLead.appointmentDates %}
                                    <div class="collection-item appointment-date cf">{% include 'CarvivoCrmBundle:Operator/Lead:_appointmentDate.html.twig' with {'appointmentDate': appointmentDate} %}</div>
                                {% endfor %}
                                <div style="display:none">{{ form_row(form.AtelierLead.appointmentDates) }}</div>
                            </div>
                        </div>
     
                    </div>
                </div>
    J'ai beau mettre des conditions dans mon fichier _ad.html.twig pour le champ que je veux changer :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <div class="field ad-reference">
        {{ form_widget(ad.reference) }}
        {{ form_errors(ad.reference) }}
    </div>
    Rien y fait, le placeholder se modifie pour tous mes champs.

  2. #2
    Membre émérite
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2013
    Messages
    739
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Novembre 2013
    Messages : 739
    Par défaut
    Bonjour,
    il se peut que les conditions ne sont pas satisfaites , par exemple ici:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    {% if ad.price is defined %}
        <div class="field ad-price cf">
            {{ form_widget(ad.price, {'attr' : {'placeholder': placeholder|default('crm.ad.price')} }) }}
            {{ form_errors(ad.price) }}
        </div>
    {% endif %}
    Tu es sur que if ad.price is defined ?
    Sinon pour faire plus simple , pourquoi tu fais pas en full js
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $("input").attr("placeholder", "Type here to search");
    Et biensur tu dois definir le bon selector pour ton input de la form machein

  3. #3
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    236
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2014
    Messages : 236
    Par défaut
    Citation Envoyé par MehrezLabidi Voir le message
    Bonjour,
    il se peut que les conditions ne sont pas satisfaites , par exemple ici:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    {% if ad.price is defined %}
        <div class="field ad-price cf">
            {{ form_widget(ad.price, {'attr' : {'placeholder': placeholder|default('crm.ad.price')} }) }}
            {{ form_errors(ad.price) }}
        </div>
    {% endif %}
    Tu es sur que if ad.price is defined ?
    Sinon pour faire plus simple , pourquoi tu fais pas en full js
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $("input").attr("placeholder", "Type here to search");
    Et biensur tu dois definir le bon selector pour ton input de la form machein
    Je me suis surement mal exprimé désolé, le champ dont je souhaite modifier le placeholder est celui-surligné :

    _ad.html.twig

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <div class="field ad-reference">
        {{ form_widget(ad.reference) }}
        {{ form_errors(ad.reference) }}
    </div>
    Le champ est valable pour les 4 formulaires et porte le même placeholder pour tous.
    J'aimerai modifier le placeholder pour le formulaire Rechange :

    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
                <div id="universRechange" class="univers" {% if lead.interest is not null and lead.interest.code != 'rechange' %}style="display: none"{% endif %}>
                    <h4><span class="custom-radio interest-id">{{ form_widget( form.interest[34], {'attr' : {'class' : 'radio-univers'}} ) }}<label for="{{ formName|default('lead') }}_interest_34">{{ 'crm.menu.exchanges'|trans }}</label></span></h4>
                    <div class="fields">
                        <div id="adsList4" class="collection-list cf just-one">
                            <div class="ads cf" data-prototype="{% filter escape %}{% include 'CarvivoCrmBundle:Ad:_ad.html.twig' with {'ad': form.RechangeLead.ads.vars.prototype} %}{% endfilter %}">
                                {% for ad in form.RechangeLead.ads %}
                                    <div class="collection-item ad cf">{% include 'CarvivoCrmBundle:Ad:_ad.html.twig' with {'ad': ad} %}</div>
                                {% endfor %}
                                <div style="display:none">{{ form_row(form.RechangeLead.ads) }}</div>
                            </div>
                        </div>
                        <div class="field">
                            {{ form_widget(form.RechangeLead.sparePart) }}
                            {{ form_errors(form.RechangeLead.sparePart) }}
                        </div>
     
                        <div class="field checkbox">
                            {{ form_widget(form.RechangeLead.urgent) }}
                            {{ form_label(form.RechangeLead.urgent) }}
                            {{ form_errors(form.RechangeLead.urgent) }}
                        </div>
     
                    </div>
                </div>

  4. #4
    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
    un exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    {{ form_widget(form.username, { 'attr': {'class': "span12",   'placeholder': 'security.login.usernameplaceholder'|trans} }) }}
     
    ou 
     
    {{ form_widget(form.username, { 'attr': {'placeholder': 'blablabla'} }) }}

    c'est pas plus simple de créer 3 formulaires dans le controller et les afficher dans la vue twig ?

  5. #5
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    236
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2014
    Messages : 236
    Par défaut
    Citation Envoyé par dukoid Voir le message
    un exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    {{ form_widget(form.username, { 'attr': {'class': "span12",   'placeholder': 'security.login.usernameplaceholder'|trans} }) }}
     
    ou 
     
    {{ form_widget(form.username, { 'attr': {'placeholder': 'blablabla'} }) }}

    c'est pas plus simple de créer 3 formulaires dans le controller et les afficher dans la vue twig ?
    Ce code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <div class="field ad-reference">
        {{ form_widget(ad.reference, { 'attr': {'class': "universRechange", 'placeholder': 'blabla'} }) }}
        {{ form_errors(ad.reference) }}
    </div>
    Me remplace tous mes placeholder bar "blabla".

  6. #6
    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
    c'est normal puisque tu fais une boucle
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
                            {% for ad in form.AtelierLead.ads %}
                                    <div class="collection-item ad cf">{% include 'CarvivoCrmBundle:Ad:_ad.html.twig' with {'ad': ad} %}</div>
                                {% endfor %}
    le champs ad.reference est toujours le même ! donc c'est normal


    je repete : pourquoi n'as tu pas fait 3 formulaires différent ?
    "pourquoi faire simple quand on peut faire compliquer" c'est ta devise ?

    la vue doit se contenter que d'afficher. (normalement)
    je remarque que tu y mets des boucles, des conditions dans tous les sens.... c'est pas bon

Discussions similaires

  1. Réponses: 6
    Dernier message: 02/07/2008, 11h24
  2. Peut-on avoir deux fichier .htaccess pour 2 urlrewriting différents pour 1 même site
    Par JackBeauregard dans le forum Serveurs (Apache, IIS,...)
    Réponses: 3
    Dernier message: 30/09/2006, 08h35
  3. Réponses: 1
    Dernier message: 16/06/2006, 14h17
  4. Plusieurs valeurs pour un même champ
    Par will89 dans le forum Requêtes
    Réponses: 32
    Dernier message: 14/06/2006, 10h06
  5. Icone différente pour une même extention ?!
    Par NicolasJolet dans le forum Autres Logiciels
    Réponses: 2
    Dernier message: 09/03/2006, 10h24

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