Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Pages: 1
Bonjour la communauté,
J'essaye de résoudre la problématique suivante (aucune info trouvée malheureusement )
Je souhaiterais appliquer un style CSS aux options d'une liste déroulante générée via Zend_Form_Element_Select.
Concrètement, j'aimerai affecter une couleur spécifique à chacune de mes options.
Dans la pratique: j'affiche un calendrier avec des cases colorées sur ma page. Les couleurs de mes cases correspondent chacune à une personne (soit un item de ma liste déroulante). L'application de CSS sur les options de mon select me permettrait simplement de faire une association visuelle entre les cases de mon calendrier et les personnes de ma liste déroulante (pour ensuite faire des tri par exemple...)
Voici le code que j'utilise pour générer mon select:
$ordonnateurs = new DatabaseReference(); $listeOrdonnateurs = new Zend_Form_Element_Select('utilisateur_id'); $this->addElement($listeOrdonnateurs); $listeOrdonnateurs -> setLabel('Instructeur') -> setMultiOptions($ordonnateurs->makeSelect($tables->utilisateurs, array('prenom', 'nom'), array('nom' => 'ASC'), NULL, 'utilisateur_id', NULL, 'Tous')) -> setRequired(false) -> setAttribs(array('onChange' => 'document.forms.Instructeurs.submit();jWait(\'Récupération du planning de cet utilisateur...\');')) -> addFilter(new Zend_Filter_StripTags()) -> addValidator('NotEmpty', true);
Voici une vue de ce que j'ai actuellement:
Quelqu'un saurait-il s'il est possible d'assigner un style à mes options (via l'utilisation d'un array, par exemple?)
Merci d'avoir pris le temps de me lire, merci pour votre aide
Hors ligne
Ça m'a fait penser à cette solution :
Il est possible d'utiliser les sélecteurs CSS de la forme balise[attribut="valeur"]
J'utiliserai un bloc de <style></style> dont le contenu serai généré à partir de la liste des valeurs injectées dans le select.
de but-en-blanc ça donnerai quelque chose du style :
$style_tpl = <<<EOT .classeDuSelect option[value="%s"] { background-color: #%s; } EOT; /** * Liste des ID utilisateurs extrait depuis le model * en correspondance avec les codes couleur désirés */ $valueArray = array( '1' => '336699', '2' => '990000', ... 'X' => 'code couleur RGB' ); $cssBlock = ''; foreach ($valueArray as $id => $color) { $cssBlock .= sprintf($style_tpl, $id, $color); } $cssBlock = sprintf("<style type=\"text/css\">%s</style>", $cssBlock); echo ($cssBlock);
Bon là c'est un peu brut de pomme mais ça doit pouvoir s'adapter avec le cas présenté.
Hors ligne
L'aide de vue FormSelect ne permet pas d'affecter un attribut class ou style aux options (seul les attributs value, label, selected et disabled sont gérés). Tu dois créer une nouvelle aide de vue dérivée de FormSelect et l'affecter à ton Zend_Form_Element_Select via sa propriété publique $helper.
Hors ligne
@Willmore: merci pour ton approche qui a le mérite de me faire découvrir une manière "d'attaquer" le CSS que je ne connaissait pas et qui pourrait s'avérer fort utile à l'avenir
Toutefois, je pense qu'il faut s'appuyer sur les outils du framework pour garder une certaine homogénéité.
@mdelanno: Il est vrai que je ne suis pas très familier des view helpers, c'est la raison pour laquelle je cherchais surtout, en premier lieu, à voir dans quelle mesure les méthodes existantes pouvaient répondre à mon problème.
Je vais donc creuser un peu plus de ce côté là et posterai ici, le cas échéant, le petit bout de code que je créerai pour l'occasion
Merci beaucoup pour m'avoir apporté votre aide car même en essayant de résoudre des "détails", on continue d'apprendre de nouvelles choses
Hors ligne
Yeepee a écrit:
@Willmore: merci pour ton approche qui a le mérite de me faire découvrir une manière "d'attaquer" le CSS que je ne connaissait pas et qui pourrait s'avérer fort utile à l'avenir
Toutefois, je pense qu'il faut s'appuyer sur les outils du framework pour garder une certaine homogénéité.
...
C'est pas faux
A vrai dire jusqu'ici je suis plus calé sur CSS et la partie design que sur le Z-F (je n'ai commencé que récemment la pratique du framework)
N'hésite pas à exposer ici ta solution ça pourrai m'intéresser aussi (c'est toujours bon à prendre
Hors ligne
Un exemple : http://www.nabble.com/Re%3A-css-class-t … 16154.html
Et sauf erreur de ma part les sélecteurs CSS balise[attribut="valeur"] ne fonctionnent pas sous IE5.5/6 -> http://www.quirksmode.org/css/contents.html
Dernière modification par mdelanno (29-10-2009 09:28:54)
Hors ligne
Pages: 1