Précédent   Forum des professionnels en informatique > PHP > Bibliothèques et frameworks > symfony
symfony Forum d'entraide sur le framework PHP symfony. Avant de poster : cours symfony et FAQ symfony
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 06/10/2011, 14h10   #1
Membre du Club
 
Homme
Étudiant
Inscription : juin 2011
Messages : 94
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 : 94
Points : 48
Points : 48
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 :
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
johnbenz est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/10/2011, 15h17   #2
Candidat au titre de Membre du Club
 
Inscription : juin 2006
Messages : 52
Détails du profil
Informations personnelles :
Localisation : France, Hérault (Languedoc Roussillon)

Informations forums :
Inscription : juin 2006
Messages : 52
Points : 11
Points : 11
Regarde ce lien la => http://www.amicalement-web.net/perso...ny/2009/06/02/

karasnake est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/10/2011, 16h30   #3
Membre du Club
 
Homme
Étudiant
Inscription : juin 2011
Messages : 94
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 : 94
Points : 48
Points : 48
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 :
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 :
1
2
 
InvalidArgumentException	sfWidgetFormInputCheckbox does not support the following options: 'renderer_options'.
johnbenz est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/10/2011, 16h40   #4
Membre chevronné
 
Avatar de Herode
 
Développeur Web
Inscription : mars 2005
Messages : 771
Détails du profil
Informations personnelles :
Localisation : France, Savoie (Rhône Alpes)

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : mars 2005
Messages : 771
Points : 790
Points : 790
J'essayerais plutôt de surcharger la méthode render() du widget.
Herode est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/10/2011, 17h01   #5
Membre du Club
 
Homme
Étudiant
Inscription : juin 2011
Messages : 94
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 : 94
Points : 48
Points : 48
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 :
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
johnbenz est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/10/2011, 16h17   #6
Membre du Club
 
Homme
Étudiant
Inscription : juin 2011
Messages : 94
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 : 94
Points : 48
Points : 48
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
johnbenz est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 00h59.


 
 
 
 
Partenaires

Hébergement Web