Ver Mensaje Individual
  #33 (permalink)  
Antiguo 20/10/2009, 09:46
dgod
 
Fecha de Ingreso: octubre-2009
Mensajes: 5
Antigüedad: 15 años, 2 meses
Puntos: 0
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!!!