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 :

Modifier le rendu d'un input


Sujet :

Symfony PHP

  1. #1
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2011
    Messages
    104
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2011
    Messages : 104
    Points : 88
    Points
    88
    Par défaut Modifier le rendu d'un input
    Bonjour
    lorsque symfony génère un élément de formulaire de type input avec sfWidgetFormInput(Text/Checkbox....) on a

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <label for="mon champ" >Mon Label</label> <input type="text" id="" />
    J'aimerai pouvoir modifier le rendu pour par exemple ajouter une classe au label ou faire apparaitre l'input avant le label, mettre des balises strong dans le label... enfin modifier le rendu du html de symfony pour l'adapter à mes besoins.

    Le problème c'est que je ne trouve pas quelle est la fonction à modifier ? et surtout comment la modifier.
    Si qqu'un pouvait me donner un exemple basique pour que je puisse comprendre le fonctionnement ?

    Merci
    Jonathan

  2. #2
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juin 2006
    Messages : 52
    Points : 36
    Points
    36

  3. #3
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2011
    Messages
    104
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2011
    Messages : 104
    Points : 88
    Points
    88
    Par défaut
    Merci Karasnake,
    j'avais déjà utilisé le lien que tu m'as donné (amicalement web) et il marche très bien pour un sfWidgetFormDoctrineChoice mais pas pour un sfWidgetFormInputCheckbox ou sfWidgetFormInput tout court

    Mon code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    $this->setWidgets(array('email'=>new sfWidgetFormInput(),
                                 'password'=>new sfWidgetFormInputPassword(),
                                 'repassword'=>new sfWidgetFormInputPassword(),
                                 'agreecgu'=>new sfWidgetFormInputCheckbox(array(
                                     'renderer_options'=>array('formatter'=>array($this,'formatter'))
                                 ))
     
     
             ));
    Le log de l'erreur:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    InvalidArgumentException	sfWidgetFormInputCheckbox does not support the following options: 'renderer_options'.

  4. #4
    Membre éprouvé Avatar de Herode
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2005
    Messages
    825
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Savoie (Rhône Alpes)

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

    Informations forums :
    Inscription : Mars 2005
    Messages : 825
    Points : 933
    Points
    933
    Par défaut
    J'essayerais plutôt de surcharger la méthode render() du widget.

  5. #5
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2011
    Messages
    104
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2011
    Messages : 104
    Points : 88
    Points
    88
    Par défaut
    Citation Envoyé par Herode Voir le message
    J'essayerais plutôt de surcharger la méthode render() du widget.
    Ok mais j'ai eu beau essayé plusieurs fois de comprendre comment cette bestiole la marche, je n'ai jamais réussi.

    Pour un sfWidgetFormInput on voit dans la doc que la méthode render est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    public function render($name, $value = null, $attributes = array(), $errors = array())
    	  {	    return $this->renderTag('input', array_merge(array('type' => $this->getOption('type'), 'name' => $name, 'value' => $value), $attributes));
    	  }
    Donc de la j'en déduis que l'input est rendu par la méthode renderTag en lui associant un nom, eventuellement une valeur par défaut et des attributs comme une classe, id. Je peux donc faire mes modifs ici pour l'input seulement.
    Par contre je ne sais pas où se trouve la partie qui concerne le rendu du label?
    Je voudrais pouvoir englober le label et l'input dans une même div avec une classe qui soit ajoutable dans la définition du widget et pas dans le template pendant mon foreach. Le but étant de différencier juste cet élément ci (une case à cocher pour accepter des CGU ) des autres groupes de checkbox au niveau de la création du formulaire afin d'utiliser un seul template commun à tous mes formulaires.

    Merci

  6. #6
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2011
    Messages
    104
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2011
    Messages : 104
    Points : 88
    Points
    88
    Par défaut
    Sinon j'ai réussi en utilisant la méthode renderLabel(), le problème c'est que ça ne repond pas tout a fait a ma demande, puisque finalement tous les labels du formulaire vont être modifiés.

    Je voudrais faire un truc du genre myWidgetFormInput que je puisse définir avec certains attributs concernant le label afin que j'utilise celui ci directement au niveau de la définition du Form pour ensuite ne pas avoir à compliquer le partial _form.php

Discussions similaires

  1. modifier le type d'un input de file à texte avec IE
    Par damjal dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 30/09/2008, 16h50
  2. Modifier la valeur d'un input avant l'envoi
    Par kilian dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 18/03/2008, 12h28
  3. Modifier le rendu d'un bouton
    Par nox75 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 04/06/2007, 19h49
  4. Pb pour modifier la value d'1 input
    Par tigunn dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 16/03/2007, 11h41
  5. modifier la valeur d'un input
    Par zulkifli dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 13/03/2006, 10h34

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