Par Nicolas SUPRIN, jeudi 21 septembre 2006 à 14:06 | PEAR | #57 | rss
Voici, une fois pour toute, le moyen de cocher par défaut un élément HTML_QuickForm_radio, appartenant à un groupe.
En effet, lorsque l'on fait un setChecked(true) sur un element appartenant à un groupe, lors de l'affichage, la radio n'est pas cochée. Par contre, si on ne passe pas par un groupe, setChecked fonctionne à merveille !
Aprés m'être arraché les cheveux pour la nième fois sur le problème, voici une méthode simple et efficace, qui passe par un setDefault :
<?php class FormRadio extends HTML_QuickForm{ public function __construct() { // --- Appel du constrcteur de QuickForm parent::HTML_QuickForm('formRadio', 'post', $_SERVER['PHP_SELF'], '_self', null, true); // --- creation de 3 elements radio $A_radioGrp[] = $this->createElement( // type, nom, texte, label, valeur // notez que nom n'est pas renseigné 'radio', null, null, 'Toto', 'toto' ); $A_radioGrp[] = $this->createElement( 'radio', null, null, 'Titi', 'titi' ); $A_radioGrp[] = $this->createElement( 'radio', null, null, 'Tata', 'tata' ); // --- add group // elements, nom, texte, separateur, appendName // le nom sera appliqué aux elements du group, car appendName est à true $this->addGroup($A_radioGrp, 'tagada', 'Tagada ?', "<br/>\n", true); // --- on applique les valeurs par defaut $this->_setDefaults(); } private function _setDefaults() { // la radio a cocher sera celle qui porte la valeur toto $A_formDefaults['tagada'] = 'toto'; parent::setDefaults($A_formDefaults); } } $O_form = new FormRadio(); echo $O_form->toHtml(); ?>
Ce qui donne ceci :






Aucun commentaire pour le moment.
Aucun trackback.
Pour faire un trackback sur ce billet : http://www.blog.cactuscrew.com/tb.php?id=57&chk=i1enb1