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

forms y validator

Estas en el tema de forms y validator en el foro de Zend en Foros del Web. Mi formulario @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código PHP: Ver original $this -> addElement ( 'password' , 'txtPassword' , array (             'label' ...
  #1 (permalink)  
Antiguo 06/06/2011, 17:48
Avatar de HiToGoRoShi  
Fecha de Ingreso: abril-2008
Mensajes: 849
Antigüedad: 16 años
Puntos: 31
forms y validator

Mi formulario
Código PHP:
Ver original
  1. $this->addElement('password', 'txtPassword', array(
  2.             'label'      => 'Su clave secreta',
  3.             'required'   => true,
  4.             'filters'    => array('StringTrim','StringToLower'),
  5.             'validators' => array('NotEmpty')
  6.         ));
Mi controlador
Código PHP:
Ver original
  1. $this->_helper->layout()->disableLayout(); //No mostrar el layout
  2.         $this->_helper->viewRenderer->setNoRender(true); //No mostrar el render
  3.         if($this->getRequest()->isXmlHttpRequest()){
  4.             $request = $this->getRequest();
  5.             $form    = new Application_Form_Login();
  6.             if($form->isValid($request->getPost())){
  7.                 $data = array('username' => 'hitogoroshi' );
  8.                 //Zend_Session::setOptions($request->getPost($data));
  9.                 echo var_dump($form->getErrors());
  10.             }
  11.         }

Cuando envio los campos vacios, el getErros no muestra nada :s no tengo idea porque, quiero capturar mensajes de errores de validacion, aunque en realidad gran parte del proyecto va a ser validado desde el lado del cliente...
  #2 (permalink)  
Antiguo 06/06/2011, 19: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: forms y validator

Pues de entrada lo que veo es que estas usando isXmlHttpRequest eso hace que solo valides si estas usando AJAX, por lo que la validación la tienes que manejar usando la librería en el cliente que estes usando, no es algo tan transparente, ya que el formato por defecto de Zend es con un formulario común y corriente.

Vas a tener que hacer un loop para leer los mensajes y asignarlos a un objeto JSON, pasarlo al cliente y mostarlo en algún div.
  #3 (permalink)  
Antiguo 06/06/2011, 20:08
Avatar de HiToGoRoShi  
Fecha de Ingreso: abril-2008
Mensajes: 849
Antigüedad: 16 años
Puntos: 31
Respuesta: forms y validator

mmmm bueno no me hago problemas con eso, ya que en si la aplicacion es full js, y si esta desactivado los JS no va a funcionar nada
  #4 (permalink)  
Antiguo 07/06/2011, 04:21
 
Fecha de Ingreso: noviembre-2010
Mensajes: 21
Antigüedad: 13 años, 4 meses
Puntos: 1
Respuesta: forms y validator

Cita:
Iniciado por GatorV Ver Mensaje
Pues de entrada lo que veo es que estas usando isXmlHttpRequest eso hace que solo valides si estas usando AJAX, por lo que la validación la tienes que manejar usando la librería en el cliente que estes usando, no es algo tan transparente, ya que el formato por defecto de Zend es con un formulario común y corriente.
Una preguntilla, ¿esto quiere decir que los datos enviados mediante XmlHttpRequest no pueden ser validados en el servidor sino que tienen que ser forzosamente validados mediante Javascript en el cliente?

Un saludo.
  #5 (permalink)  
Antiguo 07/06/2011, 05:36
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 3 meses
Puntos: 845
Respuesta: forms y validator

mmm. no, has leido el último parrafo ?
Cita:
Vas a tener que hacer un loop para leer los mensajes y asignarlos a un objeto JSON, pasarlo al cliente y mostarlo en algún div.
La petición puede tener por respuesta un OK o un KO, en el caso del KO puede traer adjunto los mensajes de error del form, solo hay que asignar a la respuesta(JSON, XML, plain text) los mensajes de error del form(o el código de error, eso ya depende de como lo quieras manejar).

Saludos.
__________________
http://es.phptherightway.com/
thats us riders :)
  #6 (permalink)  
Antiguo 07/06/2011, 05:56
 
Fecha de Ingreso: noviembre-2010
Mensajes: 21
Antigüedad: 13 años, 4 meses
Puntos: 1
Respuesta: forms y validator

Cita:
Iniciado por masterpuppet Ver Mensaje
mmm. no, has leido el último parrafo ?

La petición puede tener por respuesta un OK o un KO, en el caso del KO puede traer adjunto los mensajes de error del form, solo hay que asignar a la respuesta(JSON, XML, plain text) los mensajes de error del form(o el código de error, eso ya depende de como lo quieras manejar).

Saludos.
Entiendo, gracias por la aclaración.

Un saludo.
  #7 (permalink)  
Antiguo 07/06/2011, 08:21
Avatar de HiToGoRoShi  
Fecha de Ingreso: abril-2008
Mensajes: 849
Antigüedad: 16 años
Puntos: 31
Respuesta: forms y validator

ok, y como obtengo los errores ? por defecto el getErros retornar una array, haria un json_encode al array que retorna este ... pero el getErrors() no me captuar nada :S xD
  #8 (permalink)  
Antiguo 07/06/2011, 09:01
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: forms y validator

Lo que pasa es que tienes el getErrors dentro del isValid, este lo tienes que obtener fuera del is valid, ya que si no pasa la validación es cuando encuentra los errores.

Algo así:
Código PHP:
Ver original
  1. $Form = new Zend_Form();
  2. //...
  3. if ($Form->isValid($Request->getPost()) {
  4.  
  5. } else {
  6.        $aErrors = $Form->getErrors();
  7. }

Aunque también Zend_Form dispone de un método para hacerlo:
Código PHP:
Ver original
  1. $Form = new Zend_Form();
  2. $aData = $this->getRequest()->getPost();
  3. $Result = $Form->processAjax($aData);

$Result va a ser un objeto JSON con el resultado, si es TRUE, es porque paso la validación, si no, es un objeto json con los elementos/mensajes.

Saludos.

Etiquetas: forms, frameworks-y-php-orientado-a-objetos, validador
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.
Respuesta




La zona horaria es GMT -6. Ahora son las 14:06.