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