Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 07-03-2008 12:01:07

Saeba
Membre
Date d'inscription: 05-02-2008
Messages: 31

[Zend_validate] Validation des boutons radio

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

Code:

//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

Code:

<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 :

Code:

["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

 

#2 07-03-2008 12:51:14

Mr.MoOx
Administrateur
Lieu: Toulouse
Date d'inscription: 27-03-2007
Messages: 1444
Site web

Re: [Zend_validate] Validation des boutons radio

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

 

#3 07-03-2008 16:01:57

Saeba
Membre
Date d'inscription: 05-02-2008
Messages: 31

Re: [Zend_validate] Validation des boutons radio

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.

Code:

$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());

Code:

<?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&eacute;ponse"
    );

    public function isValid($value)
    {
        if ($value['valeur'] === null) {
            $this->_error();
            return false;
        }

        return true;
    }
}
?>

Laurent

Hors ligne

 

Pied de page des forums

Propulsé par PunBB
© Copyright 2002–2005 Rickard Andersson
Traduction par punbb.fr

Graphisme réalisé par l'agence Rodolphe Eveilleau
Développement par Kitpages