2009-01-16 12 views
8

A continuación se muestra el código de ejemplo para crear un elemento de botón de opción con opciones Sí/No en Zend_Form. ¿Alguna idea sobre cómo establecer la respuesta requerida en Sí, de modo que si selecciona No, fallará la validación? El código de abajo aceptará Sí o No.Elemento de radio Zend_Form

$question= new Zend_Form_Element_Radio('question'); 
    $question->setRequired(true) 
     ->setLabel('Are you sure?') 
     ->setMultiOptions(array('Yes', 'No')); 

Respuesta

6

No estoy seguro si esta es la mejor manera, pero funcionó para mí:

$questionValid = new Zend_Validate_InArray(array('Yes')); 
$questionValid->setMessage('Yes is required!'); 

$question = new Zend_Form_Element_Radio('question'); 
$question->setRequired(true) 
    ->setLabel('Are you sure?') 
    ->setMultiOptions(array('Yes'=>'Yes', 'No'=>'No')) 
    ->addValidator($questionValid); 
+0

funciona muy bien, gracias – dittonamed

0

Una forma más rápida, aunque esto no funcionaría para otras situaciones:

$question = new Zend_Form_Element_Radio('question'); 
$question->setRequired(true) 
    ->setLabel('Are you sure?') 
    ->setMultiOptions(array('Yes'=>'Yes', 'No'=>'No')) 
    ->addValidator('StringLength', false, array('min' => 3, 'messages' => "You must be sure.")); 

Puesto que "no" es de menos de 3 caracteres, esto se producirá un error a menos que "sí" está seleccionada. Es un poco "hacky", pero me gusta de esta manera porque usa menos código y también hace uso de los validadores incorporados.

Cuestiones relacionadas