|  Respuesta: problema validar con zend form  
  Hola Buen dia GatorV.. Sabes que estoy intentando hacer las partes de las validaciones y pues tengo muchas dudas en cuanto a los mensajes, hasta los mementos he podido hacer que me valide que si me queda campos vacios en la vista pues no me redireccione a otra vista sino a la misma vista.. Pero quiero hacer de que me muestre los mensajes de validaciones, por ejemplo, si selecciono un usuario y en la vista tengo mas campos me indique  que faltan campos por llenar... Aqui esta el codigo que tengo hasta los momentos...Este el codigo del Formulario 1
 $this->addElement('text', 'usuario', array(
 'label'      => 'Usuario:',
 'decorators' => $decorators,
 'filters'    => array('StringTrim'),
 'required'   => true,
 'validators' => array(
 array('validator' => 'StringLength', 'options' => array(0, 30))
 )
 ));
 
 $this->addElement('text', 'telefono', array(
 'decorators' => $decorators,
 
 'label'      => 'Telefono:',
 //'required'   => true,
 'validators' => array(
 array('validator' => 'StringLength', 'options' => array(0, 11))
 )
 ));
 $this->addElement('text', 'direccion', array(
 'decorators' => $decorators,
 'label'      => 'Direccion:',
 'required'   => true,
 'validators' => array(
 array('validator' => 'StringLength', 'options' => array(0, 30))
 )
 ));
 
 $this->addElement('text', 'correo', array(
 'decorators' => $decorators,
 'label'      => 'Correo:',
 'required'   => true,
 'filters'    => array('StringTrim'),
 'validators' => array(
 'EmailAddress',
 )
 ));
 
 
 $this->addElement('select','idestado',array(
 'label' => 'Estado',
 'decorators' => $decorators,
 'value'        => 'seleccione',
 'required' => true,
 'autocomplete' => false,
 //'order' => '7',
 'decorators' => $decorators,
 'multiOptions' => $estadito,
 ));
 
 $this->addElement('select','idpais',array(
 'label' => 'Pais',
 'decorators' => $decorators,
 'value'        => 'seleccione',
 'required' => true,
 'autocomplete' => false,
 //'order' => '7',
 'decorators' => $decorators,
 'multiOptions' => $paisito,
 ));
 
 $this->addElement(
 'radio',
 'tipo',
 array(
 'label'        => 'Tipo',
 'value'        => 'seleccione',
 'separator'=>'',
 'decorators' => $decorators,
 'autocomplete' => false,
 'multiOptions' => array(
 '0'    => 'natural',
 '1'    => 'juridico',
 //'dijitParams' => array('onclick' => 'obtenerRadioSeleccionado("formulario", "tipo")')
 ),
 )
 );
 
 
 // Add the submit button
 $this->addElement('submit', 'pasar', array(
 'decorators' => $buttonDecorators,
 'ignore'   => true,
 'label'    => 'pasar',
 ));
 
 
 
 // Add the submit button
 $this->addElement('submit', 'modificar', array(
 'decorators' => $buttonDecorators,
 'ignore'   => true,
 'label'    => 'Modificar',
 ));
 
 
 $this->addElement('reset', 'reset', array(
 'decorators' => $buttonDecorators,
 'ignore'   => true,
 'label'    => 'Cancelar',
 ));
 // Add the submit button
 $this->addElement('submit', 'eliminar', array(
 'decorators' => $buttonDecorators,
 'ignore'   => true,
 'label'    => 'Eliminar',
 ));
 
 // And finally add some CSRF protection
 $this->addElement('hash', 'csrf', array(
 'ignore' => true,
 ));
 }
 De igual forma esta el codigo del formulario 2.
 
 y este es el codigo del controlador 2.
 
 public function otraAction()
 {
 //llama a cada uno de los controladores//
 $this->_helper->actionStack ('footer', 'footer', 'layout');
 $this->_helper->actionStack ('header', 'header', 'layout');
 $this->_helper->actionStack ('sidebarleft', 'sidebarleft', 'layout');
 $this->_helper->actionStack ('sidebarright', 'sidebarright', 'layout');
 
 $parametros= $this->_request->getPost();
 // print_r($parametros);
 
 
 $form = new Default_Form_Formulario();
 $form    = new Default_Form_Formulario2();
 $form->setDefaults($parametros);
 $this->view->form = $form;
 
 if ($form->isValid($_POST))
 {
 $usuario = $form->getValue('usuario');
 $telefono = $form->getValue('telefono');
 $direccion = $form->getValue('direccion');
 $correo = $form->getValue('correo');
 $pais = $form->getValue('idpais');
 $estado = $form->getValue('idestado');
 $tipo = $form->getValue('tipo');
 // print_r($parametros);
 
 $valida = new Zend_Validate_NotEmpty();
 
 if ((!$valida->isValid($usuario))or(!$valida->isValid($telefono))or(!$valida->isValid($direccion))
 or(!$valida->isValid($correo))or($pais ==' ')or($estado ==' '))//or($tipo =='seleccione'))
 
 {
 $this->_redirect('./formulario');
 
 }
 
 else{
 $value =$_POST['tipo'];
 if ($value == '0')
 {
 $form->setDefaults($parametros);
 $this->view->formulario2 = $form;
 $form->removeElement('usuario');
 $form->removeElement('telefono');
 
 
 }
 else{
 $this->view->formulario2= $form;
 $form->removeElement('direccion');
 $form->removeElement('correo');
 }
 }
 }
 else{
 $this->_redirect('./formulario');
 }
 }
 El codigo del controlador 1 solo tengo esto:
 
 <?php
 // application/controllers/FormularioController.php
 
 class FormularioController extends Zend_Controller_Action
 {
 
 public function indexAction()
 {
 $formulario = new Default_Model_Formulario();
 //$this->view->entries = $formulario->fetchAll();
 $form    = new Default_Form_Formulario();
 $this->view->form = $form;
 $this->_helper->actionStack ('footer', 'footer', 'layout');
 $this->_helper->actionStack ('header', 'header', 'layout');
 $this->_helper->actionStack ('sidebarleft', 'sidebarleft', 'layout');
 $this->_helper->actionStack ('sidebarright', 'sidebarright', 'layout');
 
 }
 
 
 public function insertarAction()
 {
 //llama a cada uno de los controladores//
 $this->_helper->actionStack ('footer', 'footer', 'layout');
 $this->_helper->actionStack ('header', 'header', 'layout');
 $this->_helper->actionStack ('sidebarleft', 'sidebarleft', 'layout');
 $this->_helper->actionStack ('sidebarright', 'sidebarright', 'layout');
 $request = $this->getRequest();
 $form    = new Default_Form_Formulario();
 if ($this->getRequest()->isPost()) {
 if ($form->isValid($request->getPost())) {
 $model = new Default_Model_Formulario($form->getValues());
 
 
 $value =$_POST['tipo'];//obtengo el vlor como se llama el radio en el formulario
 //print($value);
 if($value == '0')
 {
 
 $this->view->form= $form;
 $value =$_POST['usuario'];
 $value =$_POST['telefono'];
 
 }
 else//if radio es 1 que es juridico
 {
 $this->view->form= $form;
 $form->removeElement('direccion');
 $form->removeElement('correo');
 }
 }
 
 }
 
 $this->view->form = $form;
 }
 
 
 
 
 }
 Bueno eso es todo lo que tengo hasta los momentos, pero de verdad me urge hacer de que me muestre los mensajes de validacion.
 Gracias! espero que sirva de guia y puedas ayudarme!!!
     |