Ver Mensaje Individual
  #9 (permalink)  
Antiguo 14/02/2011, 05:38
Avatar de jerkan
jerkan
 
Fecha de Ingreso: septiembre-2005
Mensajes: 1.607
Antigüedad: 19 años, 2 meses
Puntos: 19
Respuesta: Formulario -> Proceso -> Resultado

Pongo un poco de código para ver si así me explico mejor.
Código PHP:
    public function signAction() 
    { 
        
$request $this->getRequest(); 
        
$form = new Application_Form_Guestbook(); 
        
$form->setAction(Zend_Controller_Front::getInstance()->getBaseUrl() . '/guestbook/process'); 
         
        
Zend_Session::start(); 
        
$session = new Zend_Session_Namespace('guestbook'); 
         
        
// check session stored errors 
        
if ($session->errors) { 
 
            
// add error messages to form 
            
$form->setErrors($session->errors); 
            
$form->populate($session->data); 
             
            
// unset session vars 
            
unset($session->data); 
            unset(
$session->errors); 
        } 
        
$this->view->form $form
    } 
 
 
    public function 
processAction() 
    { 
        
$request $this->getRequest(); 
        
$form = new Application_Form_Guestbook(); 
         
        if (
$request->isPost()) { 
            if (
$form->isValid($request->getPost()) === false) { 
 
               
Zend_Session::start(); 
               
$session = new Zend_Session_Namespace('guestbook'); 
               
$session->data $request->getPost(); 
               
$session->errors $form->getErrors(); 
 
            } 
        } 
        return 
$this->_helper->redirector->gotoSimple('sign'); 
    } 
En el action 'sign' es dónde se muestra el formulario. Pero, además, quiero mostrar errores si se han producido en el 'process'.
En el action 'process' es dónde se llama al conocido método isValid. Lo que estoy intentando ahí es guardar los errores en una variable sesión. Luego, en 'sign' le paso al formulario los errores guardados en sesión.

Esta aproximación no funciona de igual manera que si tuviera el formulario y el proceso en el mismo action.