Foros del Web » Programando para Internet » PHP » Zend »

Validacion de un checkbox en Zend Form

Estas en el tema de Validacion de un checkbox en Zend Form en el foro de Zend en Foros del Web. Hola de nuevo, ultimamente no paro de preguntar, pero es que por mucho que busco la documentación de Zend es escasa. Tengo un formulario y ...
  #1 (permalink)  
Antiguo 04/11/2010, 05:16
 
Fecha de Ingreso: marzo-2005
Ubicación: Málaga
Mensajes: 115
Antigüedad: 19 años, 1 mes
Puntos: 0
Validacion de un checkbox en Zend Form

Hola de nuevo, ultimamente no paro de preguntar, pero es que por mucho que busco la documentación de Zend es escasa.

Tengo un formulario y para que se pueda enviar hay que pulsas la casilla de que se está deacuerdo con los términos de uso, así que me gustaría tener un Validator par eso.

Cual sería su validator para ver que la casilla está pulsada o no?
  #2 (permalink)  
Antiguo 04/11/2010, 08:04
 
Fecha de Ingreso: marzo-2005
Ubicación: Málaga
Mensajes: 115
Antigüedad: 19 años, 1 mes
Puntos: 0
Respuesta: Validacion de un checkbox en Zend Form

He decidido pasar y no usar un validator, pero resulta que me da el mismo valor tenga o no chequeado el checkbox.

He probado a utilizar ->setCheckedValue y ->setUncheckedValue y aún así.

cuando recojo la variable en el controller y hago isChecked tampoco me va.

No se que hacer ya!
  #3 (permalink)  
Antiguo 04/11/2010, 08:50
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: Validacion de un checkbox en Zend Form

A la hora de agregar el elemento usa "required" => true o ponlo como setRequired(true) para que tengan que checarlo, luego solamente usa getValue() para que te regrese el valor, por defecto es 0 no checado y 1 checado.

Saludos.
  #4 (permalink)  
Antiguo 04/11/2010, 09:10
 
Fecha de Ingreso: marzo-2005
Ubicación: Málaga
Mensajes: 115
Antigüedad: 19 años, 1 mes
Puntos: 0
Respuesta: Validacion de un checkbox en Zend Form

Nada, no me funciona.
  #5 (permalink)  
Antiguo 04/11/2010, 09:29
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: Validacion de un checkbox en Zend Form

Muestra el código de como lo agregas y como rescatas el valor.

Saludos.
  #6 (permalink)  
Antiguo 04/11/2010, 09:32
 
Fecha de Ingreso: marzo-2005
Ubicación: Málaga
Mensajes: 115
Antigüedad: 19 años, 1 mes
Puntos: 0
Respuesta: Validacion de un checkbox en Zend Form

Este es el código:

Código PHP:
Ver original
  1. $check=new Zend_Form_Element_Checkbox('check');
  2.        $check->setLabel("I agree to the Terms of Service")
  3.                ->setRequired(true)
  4.                ;

y así recojo las variables para ver el contenido.

Código PHP:
Ver original
  1. $form=new Application_Form_Register();
  2.  
  3. print_r($form->getValues());

Y lo chequee o no siempre sale 0
  #7 (permalink)  
Antiguo 04/11/2010, 09:33
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: Validacion de un checkbox en Zend Form

Te falta llamar al método isValid() para validarlo.

Saludos.
  #8 (permalink)  
Antiguo 04/11/2010, 09:44
 
Fecha de Ingreso: marzo-2005
Ubicación: Málaga
Mensajes: 115
Antigüedad: 19 años, 1 mes
Puntos: 0
Respuesta: Validacion de un checkbox en Zend Form

Ahora siempre sale 1
  #9 (permalink)  
Antiguo 04/11/2010, 10:31
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: Validacion de un checkbox en Zend Form

El flujo es algo así:
Código PHP:
Ver original
  1. $Form = new Zend_Form();
  2. $Request = $this->getRequest();
  3. if ($Request->isPost()) {
  4.        if ($Request->isValid($Request->getPost()) {
  5.                 var_dump($Form->getValues());
  6.        }
  7. }

Saludos.
  #10 (permalink)  
Antiguo 04/11/2010, 10:41
 
Fecha de Ingreso: marzo-2005
Ubicación: Málaga
Mensajes: 115
Antigüedad: 19 años, 1 mes
Puntos: 0
Respuesta: Validacion de un checkbox en Zend Form

Hola de nuevo.

Me dice que ese metodo no esta definido

Código PHP:
Ver original
  1. Fatal error: Call to undefined method Zend_Controller_Request_Http::isValid() in C:\www\the-art-aid\application\modules\default\controllers\RegisteruserController.php on line 21
  #11 (permalink)  
Antiguo 04/11/2010, 10:45
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: Validacion de un checkbox en Zend Form

Perdon es sobre $Form.

Saludos.
  #12 (permalink)  
Antiguo 04/11/2010, 10:45
 
Fecha de Ingreso: marzo-2005
Ubicación: Málaga
Mensajes: 115
Antigüedad: 19 años, 1 mes
Puntos: 0
Respuesta: Validacion de un checkbox en Zend Form

ya veo, el $request->isvalid es $from->isvalid

Pero me da este resultado:

Código PHP:
Ver original
  1. ["check"]=> string(1) "0"

Tanto chequeado como no
  #13 (permalink)  
Antiguo 04/11/2010, 10:47
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: Validacion de un checkbox en Zend Form

Es muy raro, no hay algún código Javascript que este cambiando el estado del botón, prueba hacer un var_dump($_POST); para ver los valores post como tal.

Saludos.
  #14 (permalink)  
Antiguo 04/11/2010, 10:55
 
Fecha de Ingreso: marzo-2005
Ubicación: Málaga
Mensajes: 115
Antigüedad: 19 años, 1 mes
Puntos: 0
Respuesta: Validacion de un checkbox en Zend Form

He hecho lo que me has dicho pero seguía igual, así que he tirado por otra linea y la cosa es que en el código fuente sale repetido dos veces el input del checkbox!!!

Precisamente este elemento lo estoy generando con un decorator de viewscript y para montarlo he escrito esto:

Código PHP:
Ver original
  1. <?php
  2.     echo $this->{$this->element->helper}(
  3.  
  4.         $this->element->getName(),
  5.  
  6.         $this->element->getValue(),
  7.  
  8.         $this->element->getAttribs()
  9.  
  10.     ) ?>

Ahora mi problema es saber porque me genera dos veces el input!, a ver si puedes mirar que hago mal.

Siento no haberme dado cuenta antes de esto.
  #15 (permalink)  
Antiguo 04/11/2010, 11:12
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: Validacion de un checkbox en Zend Form

Remueve el view decorator, por que eso va a hacer que te dibuje dos veces el input, uno con tu viewScript y otro con el view helper normal.

Saludos.
  #16 (permalink)  
Antiguo 05/11/2010, 02:46
 
Fecha de Ingreso: marzo-2005
Ubicación: Málaga
Mensajes: 115
Antigüedad: 19 años, 1 mes
Puntos: 0
Respuesta: Validacion de un checkbox en Zend Form

Entonces si hago eso no se va a ver mi elemento como yo quiero.

Como puedo hacer para que eso no suceda?
  #17 (permalink)  
Antiguo 05/11/2010, 03:15
 
Fecha de Ingreso: marzo-2005
Ubicación: Málaga
Mensajes: 115
Antigüedad: 19 años, 1 mes
Puntos: 0
Respuesta: Validacion de un checkbox en Zend Form

Hola de Nuevo.

Al final lo que he hecho es quitar el helper dentro del viewscript y poner esto

Código HTML:
Ver original
  1. <input type="checkbox" class="checkbox" value="1" id="<?= $this->element->getId() ?>" name="<?= $this->element->getName() ?>" <?php echo $this->element->isChecked() ? " checked=\"checked\"" : "" ?> />

Se que no es una solución muy elegante, pero es que ya no me puedo permitir perder más tiempo con esto.

Pero funciona!!!
  #18 (permalink)  
Antiguo 05/11/2010, 07:47
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: Validacion de un checkbox en Zend Form

Me refería solo al view helper, no el viewScript helper, por eso te estaba poniendo dos checkboxes...

Etiquetas: checkbox, formulario
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Tema Cerrado




La zona horaria es GMT -6. Ahora son las 13:21.