Respuesta: problema validar con zend form hola GatorV. Me funciona pero para el segun do formulario pero para el primer formulario no me funciona porque no me muestra los mensajes de error. Yo creo que es por la validacion que tengo en el controlador porque cuando se la quito si me muestra esos mensajes, pero sino lo valido asi entonces me pasa de una vez a ese segundo formulario que tengo.
Esta es mi controlador de mi primer formulario :
<?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;
}
}
Este es el controlador de mi segundo formulario:
<?php
// application/controllers/FuncionController.php
class Formulario2Controller extends Zend_Controller_Action
{
public function indexAction()
{
//$form = new Default_Form_Formulario2();
$formulario = new Default_Model_Formulario2();
//$this->view->entries = $formulario->fetchAll();
$form = new Default_Form_Formulario2();
$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');
$form = new Default_Form_Formulario2();
$this->view->form = $form;
$form->removeElement('usuario');
$form->removeElement('telefono');
$form->removeElement('direccion');
$form->removeElement('correo');
}
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');
}
}
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_Formulario2();
if ($this->getRequest()->isPost()) {
if ($form->isValid($request->getPost())) {
$model = new Default_Model_Formulario2($form->getValues());
$model->save();
print('Usuario Guardado con Exito');
die();
//return $this->_helper->redirector('index');
}
}
$this->view->form = $form;
}
}
Como veraz, sino lo valido asi pues el me muestra los mensajes de error pero me redirecciona es a la otra vista y yo quiero que me muestre los mensajes de error pero que se me quede en la misma vista...
Si puedes ayudarme te lo agradeceria... |