Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Pages: 1
Bonjour,
J'utilise Zend_Validate associé à Zend_Form pour mes formulaires.
J'ai utilisé correctement les validateurs pour les champs textes, les listes déroulantes, les emails, mais je bloque pour valider les boutons radio.
La déclaration des validateurs
//Formulaire $form = new Zend_Form; //Champ radio ==> obligatoire $b_radio = new Zend_Form_Element_Radio('b_radio'); $b_radio->addValidator('Digits') ->setRequired(true); $form->addElement($b_radio );
La vue
<input type="radio" name="b_radio" value="1" id="b_radio_oui" />Oui <input type="radio" name="b_radio" value="0" id="b_radio_non" />Non
Lorsque je coche "oui", pas de problème, le validateur est ok.
Par contre, en cochant non (donc la valeur vaut 0), j'ai :
["b_radio"] => array(1) { ["isEmpty"] => string(49) "Value is empty, but a non-empty value is required" }
Est ce que je peux valider un bouton radio avec un validateur par défaut, ou est ce que je dois faire un validateur personnalisé ?
Merci d'avance,
Laurent
Hors ligne
Le problème c'est que 0 en PHP c'est empty...
Alors soit tu met un indice de plus, et tu décrémente à la sortie (via un filtre pourquoi pas), soit tu met meme pas de validateurs, tu coche un box par default et tu met un filtre Int.
Après ces méthodes ne sont peux être pas appropriés à tes besoins.
Hors ligne
Bonjour,
Dans mon appli, il faut que oui==1, non ==0.
Les templates sont déjà en place etc, donc j'ai créé mon validateur.
Le voilà si ca intéresse des gens. Pour son appel, je ne sais pas si c'est le plus adapté par contre.
$form = new Zend_Form; $co = $this->_request->getPost('choix'); $arr_choix = array(); $arr_choix['valeur'] = $co; $_POST['radio_choix'] = $arr_choix; $choix = new Zend_Form_Element_Radio('radio_choix'); $choix->setRequired(true) ->addValidator(new Myvalid_Validate_Radio());
<?php require_once 'Zend/Validate/Abstract.php'; /** * Validateur de radio * Si la valeur est null, alors ca a été non rempli. * Si 0, 1 ou autre, ca a été rempli * */ class Myvalid_Validate_Radio extends Zend_Validate_Abstract { const VALIDATEUR = 'radio'; protected $_messageTemplates = array( self::VALIDATEUR => "Vous devez choisir une réponse" ); public function isValid($value) { if ($value['valeur'] === null) { $this->_error(); return false; } return true; } } ?>
Laurent
Hors ligne
Pages: 1