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 16/06/2011, 15h49   #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 render de sfWidgetFormDoctrineChoiceGrouped

Bonjour à tous,
j'utilise dans un formulaire le widget sfWidgetFormDoctrineChoiceGrouped du plugin sfFormExtraPlugin. Mon but est d'avoir des checkbox regroupées par catégories. Jusque la tout va bien, le problème c'est le rendu HTML, je me retrouve avec:
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 
Categorie1
<ul>
<li>Checkbox1</li>
<li>Checkbox2</li>
...........
<li>CheckboxX</li>
</ul>
Categorie2
<ul>
<li>Checkbox Y</li>
<li>Checkbox </li>
...........
<li>Checkbox Z</li>
</ul>
Le problème c'est qu'il n'y a pas de balises autour des champs de la Catégorie. J'aurai voulu un truc du genre <h2 id="idcat1">Categorie1</h2> afin de pouvoir appliquer du CSS à ma catégorie ainsi que du code Javascript: Je veux que pour une personne n'ayant pas activé Javascript tout apparaisse sur la même page et pour une personne avec Javascript pouvoir afficher chaque catégorie sous forme d'onglets cliquables.


J'ai donc cherché comment ajouter des balises HTML autour de catégorie, mais je n'ai pas trouvé comment. Je me doute qu'il faille redéfinir la fonction render() et j'ai cherché des heures dans l'API sans trouver.
Merci pour votre aide,
John
johnbenz est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/06/2011, 17h04   #2
Membre chevronné
 
Avatar de Herode
 
Développeur Web
Inscription : mars 2005
Messages : 769
Détails du profil
Informations personnelles :
Localisation : France, Savoie (Rhône Alpes)

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : mars 2005
Messages : 769
Points : 788
Points : 788
Tu peux dériver ton widget et surcharger la méthode render() en effet mais le plus simple (donc le plus sûr) serait d'utiliser les options renderer_class, renderer_options ou renderer (cf. la doc du sfWidgetFormChoice) : tu définis un widget à toi qui va s'occuper exclusivement du rendu et tu t'en sers comme renderer pour ton sfWidgetFormDoctrineChoiceGrouped.
Herode est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/06/2011, 14h40   #3
Modérateur
 
Avatar de Michel Rotta
 
Homme Michel Rotta
Responsable d'exploitation informatique
Inscription : septembre 2005
Messages : 4 913
Détails du profil
Informations personnelles :
Nom : Homme Michel Rotta
Âge : 49
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Responsable d'exploitation informatique
Secteur : Distribution

Informations forums :
Inscription : septembre 2005
Messages : 4 913
Points : 7 505
Points : 7 505
Et si tu fais un css pour l'affichage de ton select, tu peux changer pour les ul...
__________________
Si tu donnes un poisson à un homme, il mangera un jour. Si tu lui apprends à pêcher, il mangera toujours (Lao Tseu).
  • Pensez à valoriser les réponses pertinantes, cliquez sur le bouton vert +1 pour indiquer votre accord avec la solution proposée.
  • Pensez à utiliser la balise [code] pour afficher du code, elle est cachée sous le bouton [#] dans l'éditeur.
  • Une discussion est terminée ? Alors le bouton est votre ami !
Michel Rotta est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/06/2011, 12h36   #4
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 pour les réponses, je suis arrivé grâce à
Code :
1
2
 
'renderer_options'=>array('template'=>'<h2>%group%</h2>%options%')
que j'ai inséré dans la déclaration de mon widget.
@Michel: j'ai pas compris pour les <ul>? Pourquoi vaut mieux mettre autre chose? ps: je ne suis pas celui qui va mettre le css, étant donné mes talents de designer et mon horrible gout artistique je compte demander de l'aide mais je veux programmer les templates de manière à ce que cette personne n'ait que les templates et pas le code à toucher.

Sinon j'ai regardé un peu plus les codes de l'API et j'ai toujours du mal à comprendre comment tout celà marche. J'ai vu le code source de la méthode render() de sfwidgetFormChoice et j'ai vu aussi qu'elle appelait une méthode getRenderer() mais je suis resté incapable de comprendre le mécanisme. Si quelqu'un avait un exemple d'override de la méthode render() pour par exemple changer les '<ul>' en '<ol>' ou faire ce que j'ai fait mais directement en override.

Merci et bon week end à tous,
John
johnbenz est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/06/2011, 15h41   #5
Modérateur
 
Avatar de Michel Rotta
 
Homme Michel Rotta
Responsable d'exploitation informatique
Inscription : septembre 2005
Messages : 4 913
Détails du profil
Informations personnelles :
Nom : Homme Michel Rotta
Âge : 49
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Responsable d'exploitation informatique
Secteur : Distribution

Informations forums :
Inscription : septembre 2005
Messages : 4 913
Points : 7 505
Points : 7 505
Parce que le code généré permettra à un designer de faire la mise en page qu'il souhaite sans avoir besoin de retoucher le dom. Sauf exception particulièrement exceptionnel, mais je doute que tu y sois.

J'ai démonter plusieurs render, mais pas celui-ci en particulier. En suivant bien les méthodes et avec un peu de rétro ingénieurerie, cela ne devrait pas être trop compliqué (enfin, si, avec l'objet et symfony, ce n'est jamais évident du premier coup).
__________________
Si tu donnes un poisson à un homme, il mangera un jour. Si tu lui apprends à pêcher, il mangera toujours (Lao Tseu).
  • Pensez à valoriser les réponses pertinantes, cliquez sur le bouton vert +1 pour indiquer votre accord avec la solution proposée.
  • Pensez à utiliser la balise [code] pour afficher du code, elle est cachée sous le bouton [#] dans l'éditeur.
  • Une discussion est terminée ? Alors le bouton est votre ami !
Michel Rotta est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/06/2011, 18h56   #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
Merci pour ta réponse,
je vais donc m'attaquer au render,
par contre pour les <ul> et pour tous les autres éléments des pages view tu préconise quoi? Je m'explique, pour qu'un designer puisse travailler proprement avec quelles balises html est il conseillé de générer un formulaire, une page qui affiche des objets de la bdd?
Je n'en suis pas encore là mais si je peux faire le travail proprement dès le début ça sera tjs ça de gagné
johnbenz est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/06/2011, 20h32   #7
Modérateur
 
Avatar de Michel Rotta
 
Homme Michel Rotta
Responsable d'exploitation informatique
Inscription : septembre 2005
Messages : 4 913
Détails du profil
Informations personnelles :
Nom : Homme Michel Rotta
Âge : 49
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Responsable d'exploitation informatique
Secteur : Distribution

Informations forums :
Inscription : septembre 2005
Messages : 4 913
Points : 7 505
Points : 7 505
Au risque de me répéter et comme je l'ai déjà dis au moins 2 fois ici, le code généré par le render est sémantiquement le bon. De plus, je ne suis pas sur que d'autres codes soient possible dans le cadre d'une balise select.

Il est utilisé tel quel par de nombreux sites qui arrivent très bien à le mettre en page. Donc, le mieux serait, à mon avis, de ne rien toucher et de laisser le plugin faire.

Si réellement, il s'avèrerait impossible à ton graphiste d'utiliser le code généré, je pense que tu as alors deux solutions : changer de graphiste, modifier le render. Je pense que dans ce cas, la première solution est la bonne.

Pour terminé, ce plugin est écrit par les mêmes personnes que celles qui ont écrit symfony, elles ont de nombreuses années d'expérience sur la construction d'applications qui génèrent du html, tu devrais pouvoir envisager sérieusement de leur faire confiance. Surtout si, comme tu le dis au départ, tu as toi même très peu d'expérience sur la mise en page.
__________________
Si tu donnes un poisson à un homme, il mangera un jour. Si tu lui apprends à pêcher, il mangera toujours (Lao Tseu).
  • Pensez à valoriser les réponses pertinantes, cliquez sur le bouton vert +1 pour indiquer votre accord avec la solution proposée.
  • Pensez à utiliser la balise [code] pour afficher du code, elle est cachée sous le bouton [#] dans l'éditeur.
  • Une discussion est terminée ? Alors le bouton est votre ami !
Michel Rotta est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/06/2011, 21h21   #8
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
Ok donc je laisse le html tel qu'il est alors.
Par contre pour les <ul> j'ai tjs pas compris le problème que tu m'avais signalé dans ton post précédent car je n'avais rien touché ils ont été générés automatiquement par le widget sfWidgetFormDoctrineChoiceGrouped que j'utilise pour obtenir des checkboxes (multiple and expanded =true).
johnbenz est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/06/2011, 22h37   #9
Modérateur
 
Avatar de Michel Rotta
 
Homme Michel Rotta
Responsable d'exploitation informatique
Inscription : septembre 2005
Messages : 4 913
Détails du profil
Informations personnelles :
Nom : Homme Michel Rotta
Âge : 49
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Responsable d'exploitation informatique
Secteur : Distribution

Informations forums :
Inscription : septembre 2005
Messages : 4 913
Points : 7 505
Points : 7 505
Désolé, c'est entièrement de ma faute.

J'ai parfois tendance à considérer que tous le monde lit dans mon esprit...

Je voulais simplement dire qu'il était possible de spécifier un style pour toute la liste et de le changer pour les ul, donc d'avoir l'effet que tu souhaitais... Trop court. Encore désolé.
__________________
Si tu donnes un poisson à un homme, il mangera un jour. Si tu lui apprends à pêcher, il mangera toujours (Lao Tseu).
  • Pensez à valoriser les réponses pertinantes, cliquez sur le bouton vert +1 pour indiquer votre accord avec la solution proposée.
  • Pensez à utiliser la balise [code] pour afficher du code, elle est cachée sous le bouton [#] dans l'éditeur.
  • Une discussion est terminée ? Alors le bouton est votre ami !
Michel Rotta est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/06/2011, 22h53   #10
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
Ok pas de soucis, maintenant c'est plus clair
Citation:
Envoyé par Michel Rotta Voir le message
J'ai parfois tendance à considérer que tous le monde lit dans mon esprit...
J'aimerai bien que cela soit possible, j'avancerai plus vite avec symfony

Merci
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 19h13.


 
 
 
 
Partenaires

Hébergement Web