Foros del Web » Programando para Internet » PHP » Zend »

problema validar con zend form

Estas en el tema de problema validar con zend form en el foro de Zend en Foros del Web. no entiendo cuando dices "ya directo en el formulario" , yo estoy creando el radio en el formulario de extension Zend_Form, incluyo el javascrip dentro ...

  #31 (permalink)  
Antiguo 08/10/2009, 15:16
 
Fecha de Ingreso: septiembre-2009
Mensajes: 31
Antigüedad: 14 años, 7 meses
Puntos: 0
Respuesta: problema validar con zend form

no entiendo cuando dices "ya directo en el formulario", yo estoy creando el radio en el formulario de extension Zend_Form, incluyo el javascrip dentro de esto??? o creo un archivo js asi como cuando se crean los estilos y en el onchage del radio le coloco la ruta completa del js???
Desde ya gracias!!!!
  #32 (permalink)  
Antiguo 09/10/2009, 08:56
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: problema validar con zend form

Eso ya es más tema del comportamiento en el cliente, en el onchange tiene que ir la funcion o las sentencias a ejecutar, no puedes incluir un archivo js en el onchange.

Si no tienes mucho conocimiento de eso, te recomiendo veas un tutorial de javascript, en el foro de Javascript en las FAQs hay muchas herramientas.

Saludos.
  #33 (permalink)  
Antiguo 20/10/2009, 09:46
 
Fecha de Ingreso: octubre-2009
Mensajes: 5
Antigüedad: 14 años, 6 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!!!
  #34 (permalink)  
Antiguo 20/10/2009, 09:51
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: problema validar con zend form

Solamente agrega a tu form el errorDecorator y con eso muestra los mensajes de error.

Saludos.
  #35 (permalink)  
Antiguo 20/10/2009, 10:05
 
Fecha de Ingreso: octubre-2009
Mensajes: 5
Antigüedad: 14 años, 6 meses
Puntos: 0
Respuesta: problema validar con zend form

En mi formulario le tengo asignado a cada elemento los decoradores y te muestro el decorador:

$decorators = array(
array('ViewHelper', array('tag' => null)),
array('Errors', array('tag' => null)),
array('Label', array('tag' => null, 'separator'=>'')),
array('HtmlTag', array('tag' => null)),);
y para eso necesito configurar un archivo donde tenga los mensajes?????
  #36 (permalink)  
Antiguo 20/10/2009, 10:06
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: problema validar con zend form

No, pero ahi no le das ningún tag, aunque sea ponlos en un <ul> o algo para que los muestre.

Saludos.
  #37 (permalink)  
Antiguo 20/10/2009, 10:21
 
Fecha de Ingreso: octubre-2009
Mensajes: 5
Antigüedad: 14 años, 6 meses
Puntos: 0
Respuesta: problema validar con zend form

No te entiendo mucho, pero yo de todas formas coloco un archivo de Errors y dentro de el muestro esto:


<?php
<ul class="errores"[opciones html]>
<li>[error1]</li>
….
<li>[errorN]</li>
</ul>
Pero tampoco me funciona GatorV...
  #38 (permalink)  
Antiguo 20/10/2009, 10:46
 
Fecha de Ingreso: noviembre-2007
Ubicación: Lanus, Buenos Aires
Mensajes: 178
Antigüedad: 16 años, 5 meses
Puntos: 14
Respuesta: problema validar con zend form

prueba con esto y a partir de ahi empieza a modificar lo que quieras para dejarlo como deseas

Código PHP:
$decorators = array('ViewHelper''Errors''Label''HtmlTag'); 
  #39 (permalink)  
Antiguo 20/10/2009, 10:46
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: problema validar con zend form

No es un archivo es un tag, ve este tutorial: http://akrabat.com/2008/02/21/simple-zend_form-example/

Saludos.
  #40 (permalink)  
Antiguo 20/10/2009, 14:21
 
Fecha de Ingreso: octubre-2009
Mensajes: 5
Antigüedad: 14 años, 6 meses
Puntos: 0
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...
  #41 (permalink)  
Antiguo 20/10/2009, 15:41
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: problema validar con zend form

No entiendo claramente lo que estas tratando de hacer, si rediriges a otra vista/accion no se va a ejecutar el validador.

Saludos.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 19:47.