Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Pages: 1
Bonjour,
Je n'arrive pas à aligner plusieurs bouton radio sur une même ligne.
J'ai réussi a modifier mes décorateur pour avoir un affichage via une table mais en revanche je ne vois pas comment changer le 'label' pour les multioptions d'un bouton radio.
Voici le code HTML que cela génère :
<form id="errorreporting" enctype="application/x-www-form-urlencoded" action="" method="post"><table> <tr> <td><label for="email" style="width:100px" class="required">E-MAIL:</label></td> <td><input type="text" name="email" id="email" value=""></td> </tr> <tr> <td><label for="type" class="required">Type :</label></td> <td> <label style="white-space: nowrap;"> <input type="radio" name="type" id="type-0" value="0" checked="checked">TO</label> <label style="white-space: nowrap;"> <input type="radio" name="type" id="type-1" value="1">CC</label> </td> </tr> <tr><td><td><input type="submit" name="submit" id="submitbutton" value="Modify"></td></td></tr> </table> </form>
Comment faire pour que :
<label style="white-space: nowrap;">
<input type="radio" name="type" id="type-0" value="0" checked="checked">TO</label>
<label style="white-space: nowrap;">
<input type="radio" name="type" id="type-1" value="1">CC</label>
soient cote à cote car actuellement ils sont l'un au dessus de l'autre.
Je voudrai pouvoir modifier leurs styles afin que ces labels n'aient pas de display: block ou bien la possibilité de modifier les balises pour avoir :
<input type="radio" name="type" id="type-0" value="0"><span>TO</span>
<input type="radio" name="type" id="type-1" value="1"><span>CC</span>
merci d'avance.
Hors ligne
Tu l'as dit toi même, il faut modifier les styles.
Ne touche pas à tes décorateurs et modifie ta feuille de style
Mets les inline, ou bien utilise des floattants.
Dernière modification par nORKy (08-02-2010 16:36:22)
Hors ligne
Oui mais comment différencier :
<label for="type" class="required">Type :</label>
et
<label style="white-space: nowrap;"><input type="radio" name="type" id="type-0" value="0" checked="checked">TO</label>
car dans setDecorator je fais : array('Label', array('tag' => 'td', 'style' => 'width:100px'))
or l'attribut style n'est pas appliqué aux label des multioptions.
Comment modifier le style des label des MultiOptions des boutons radio ?
Pour rappel :
$type = new Zend_Form_Element_radio('type'); $type->setLabel('Type :') ->setMultiOptions(array('0'=>'TO', '1'=>'CC'))
Dernière modification par Aure77 (10-02-2010 11:15:03)
Hors ligne
Bonsoir,
Si j'ai bien compris, tu veux modifier le style uniquement des labels des boutons radios (qui possèdent un attribut style) et pas les autres.
Un sélecteur css du type : elem[attr] devrait fonctionner je penser :
/* fichier.css */ label[style] { display:inline; /* ou float:left; à toi de voir*/ }
Bonne soirée
Hors ligne
Hors ligne
2 remarques :
1 - <label for="email" style="width:100px" class="required">E-MAIL:</label> contient style mais ne devrait pas être pris en compte (car pas le label d'un radio).
2 - Ne fonctionne pas sous IE 6 (très important car utilisé en majorité à mon travail)!
N'y a t'il pas un moyen d'ajouter directement une classe au label devant les input type radio ?
Hors ligne
Euh après, pour être conforme avec IE 6.0, je sais pas si le sélecteur passe effectivement.
Pour ce qui est d'ajout direct d'un attribut classe au label, je dois avouer que je ne sais pas trop (je débute sous Zend), éventuellement (pardonnez-moi si je me trompe) étendre Zend_Helper_Radio (ou quelque chose comme ça, je ne me rappelle plus trop) non ?
Après, serait peut-être temps de mettre à jour les versions d'IE, un truc que je pige pas ça
C'est comme si j'appelais à l'aide sur du css car ça ne fonctionne pas bien sur mon firefox 1.0 (bon après, bien sur en entreprise, c'est pas si facile que ça mais bon ...)
Bonne soirée
Hors ligne
Aure77 a écrit:
N'y a t'il pas un moyen d'ajouter directement une classe au label devant les input type radio ?
Tu peux passer une option au décorateur Label de tes éléments radio :
<?php [...] /** * Déclaration d'un élément Radio */ $radio = new Zend_Form_Element_Radio('myRadioElement'); ... $radio->getDecorator('label')->setOption('class', 'classCSS1 classCSS2'); [...]
Le label se verra ajouter les classes CSS "classCSS1" et "classCSS2"
Dernière modification par Willmore (11-02-2010 10:06:39)
Hors ligne
Bonjour et merci pour vos réponse mais ce n'est pas ça...
$radio->getDecorator('label')->setOption('class', 'toto'); Modifie le label situé devant le bouton radio :
<tr> <td><label for="type" class="toto">Type :</label></td> // change ici <td> <label style="white-space: nowrap;"> // mais rien ici <input type="radio" name="type" id="type-0" value="0" checked="checked">TO</label> <label style="white-space: nowrap;"> <input type="radio" name="type" id="type-1" value="1">CC</label> </td> </tr>
Et pas les labels des options radios...
Hors ligne
pour les labels des options radios, il faut utilisé l'attribut 'label_class' et pas 'class'
Hors ligne
Pourrait-on voir de quelle façon sont définit les décorateurs ?
ça pourrait donner des indices sur la marche à suivre.
Hors ligne
Oui car je vois pas ou mettre ton label_class.
Car si je met : $radio->getDecorator('label')->setOption('label_class', 'toto');
ça me fait :
<td><label for="type" class="required" label_class="toto">Type :</label></td>
Hors ligne
C'est dans les options de l'élément qu'il faut le mettre :
$radio->setOptions(array('label_class', => 'toto'));
Hors ligne
Merci ! Je confirme ça fonctionne !
Mais bon c'est pas simple quand on connait pas
Dernière modification par Aure77 (12-02-2010 16:44:31)
Hors ligne
Pages: 1