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

Adding options Zend_Validate_Callback

Estas en el tema de Adding options Zend_Validate_Callback en el foro de Zend en Foros del Web. Hola amigos, Estoy intentando pasarle unos parametros a la funcion Callback para poder validar un formulario. He estado mirando la documentacion de Zend y he ...
  #1 (permalink)  
Antiguo 20/04/2012, 02:49
 
Fecha de Ingreso: diciembre-2010
Mensajes: 79
Antigüedad: 13 años, 11 meses
Puntos: 3
Adding options Zend_Validate_Callback

Hola amigos,

Estoy intentando pasarle unos parametros a la funcion Callback para poder validar un formulario.

He estado mirando la documentacion de Zend y he hecho lo siguiente

Código PHP:
Ver original
  1. $option='pepito';
  2. $element = new Element\Text('email');
  3.             $element->setLabel('Email')
  4.             ->setRequired(true)
  5.             ->addValidator('emailAddress')
  6.             ->addValidator('Callback', true, array(
  7.                     'callback' => array(new CustomerLogic(), 'CheckEmailSpecial'),
  8.                     'options'  => $option,
  9.                     'messages' =>array(
  10.                             'callbackValue' => 'There is other customer with this email',
  11.                             'callbackInvalid' => 'There is a problem in the system')));
  12.             $this->addElement($element);

Imaginemos que es un formulario que he creado en una clase llamada FormularioEmail que hereda de Form.

Ahora en otra clase invoco el formulario es decir $form->isValid($data), pues lo que consigo en el metodo CheckEmailSpecial haciendo una traza es todos los valores del formulario pero no pepito.

Que estoy haciendo mal... es que he visto en la documentacion que le pasar un parametro pero claro lo pasa cuando valida el elemento y yo lo que quiero hacer es validar el formulario entero, que realmente lo que hace el validar cada elemento.

Alguna ayudita
  #2 (permalink)  
Antiguo 20/04/2012, 05:48
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 10 meses
Puntos: 845
Respuesta: Adding options Zend_Validate_Callback

Que tal lolocripto,

Que versión de Zend estas utilizando ?, en Zend 2 no es options es callbackOptions

Saludos.
__________________
http://es.phptherightway.com/
thats us riders :)
  #3 (permalink)  
Antiguo 22/04/2012, 04:20
 
Fecha de Ingreso: diciembre-2010
Mensajes: 79
Antigüedad: 13 años, 11 meses
Puntos: 3
Respuesta: Adding options Zend_Validate_Callback

Si, Si uso Zend2... pero tampoco funciona. Cuando le doy a validar el formulario y hago la traza sigue enviandome todos los valores del formulario pero no pepito.

Código PHP:
Ver original
  1. $option='pepito';
  2.     $element = new Element\Text('email');
  3.                 $element->setLabel('Email')
  4.                 ->setRequired(true)
  5.                 ->addValidator('emailAddress')
  6.                 ->addValidator('Callback', true, array(
  7.                         'callback' => array(new CustomerLogic(), 'CheckEmailSpecial'),
  8.                         'callbackOptions'  => $option,
  9.                         'messages' =>array(
  10.                                 'callbackValue' => 'There is other customer with this email',
  11.  
  12.                                 'callbackInvalid' => 'There is a problem in the system')));
  13.                 $this->addElement($element);
  #4 (permalink)  
Antiguo 22/04/2012, 05:38
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 10 meses
Puntos: 845
Respuesta: Adding options Zend_Validate_Callback

No se que es lo que estas haciendo pero si en CustomLogic::checkEmailSpecial haces:

Código PHP:
Ver original
  1. public function checkEmailSpecial()
  2. {
  3.     \Zend\Debug::dump(func_get_args());                    
  4.     return false;
  5. }

no ves las opciones del callback ?
__________________
http://es.phptherightway.com/
thats us riders :)
  #5 (permalink)  
Antiguo 22/04/2012, 06:11
 
Fecha de Ingreso: diciembre-2010
Mensajes: 79
Antigüedad: 13 años, 11 meses
Puntos: 3
Respuesta: Adding options Zend_Validate_Callback

Si llevas razon, es que yo habia echo una cosa asi

Código PHP:
Ver original
  1. static function CheckEmailSpecial($email, $option){

y lo que claro lo que pasa es que la variable option la envia en el tercer parametro... Es decir si yo pongo lo que me has dicho

Código PHP:
Ver original
  1. static  public function checkEmailSpecial()
  2.     {
  3.         \Zend\Debug::dump(func_get_args());                    
  4.         return false;
  5.     }

Me sale un array de 3 elementos el primero es el elemento value, es decir el email, el segundo son la variable de cada formulario y el tercero es la varible $option...

Ahora tengo otra duda que no se como resolver

Código PHP:
Ver original
  1. ...
  2.    
  3.     class FormExCustomerAccount extends Form{
  4.        
  5.        
  6.         public function init()
  7.         {
  8.            
  9.            
  10.             $element = new Element\Password('cu_password1');
  11.             $element->setLabel('Password1')
  12.             ->setRequired(true)
  13.             ->addFilter('StripTags')
  14.             ->addFilter('StringTrim')
  15.             ->addValidator('NotEmpty')
  16.             ->addValidator('stringLength', false, array(2, 20));
  17.             $this->addElement($element);
  18.                
  19.             //identical le pasamos un array con el token a identificar en este caso el valor de la variable password
  20.             $element = new Element\Password('cu_password2');
  21.             $element->setLabel('Password2')
  22.             ->setRequired(true)
  23.             ->addFilter('StripTags')
  24.             ->addFilter('StringTrim')
  25.             ->addValidator('NotEmpty')
  26.             ->addValidator('identical', false,array(
  27.                     'token' => 'cu_password1',
  28.                     'messages' =>array(
  29.                             'notSame' => 'Passwords are not the same',
  30.                             'missingToken' => 'Problems')))
  31.             ->addValidator('stringLength', false, array(2, 20));
  32.             $this->addElement($element);
  33.            
  34.             $element = new Element\Text('userid');
  35.             $element->setLabel('User id');
  36.             $this->addElement($element);
  37.            
  38.        
  39.             $option=$this->getElement('userid')->getValue();
  40.            
  41.            
  42.             $element = new Element\Text('cu_email');
  43.             $element->setLabel('Email')
  44.             ->setRequired(true)
  45.             ->addValidator('emailAddress')
  46.             ->addValidator('Callback', true, array(
  47.                     'callback' => array(new CustomerLogic(), 'CheckEmailSpecial'),
  48.                     'callbackOptions'=> $option,
  49.                     'messages' =>array(
  50.                             'callbackValue' => 'There is other customer with this email',
  51.                             'callbackInvalid' => 'There is a problem in the system')));
  52.             $this->addElement($element);
  53.            
  54.  
  55.         }
  56.     }
  57.    
  58. ?>

Como hago para meter la variable de userid en opciones, no se como meterlo utilizo $this->getElement('userid')->getValue(), pero no funciona sabrias como puedo decir que el parametro $option de la funcion callback es otro elemento de mi formulario...

Gracias
  #6 (permalink)  
Antiguo 22/04/2012, 06:33
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 10 meses
Puntos: 845
Respuesta: Adding options Zend_Validate_Callback

En vez de pasar el value del element(que en el init es null), pasa directamente el element, algo así:

Código PHP:
Ver original
  1. $user = new Element\Text('userid');
  2. $user->setLabel('User id');
  3. $this->addElement($user);
  4. ...
  5. 'callbackOptions'=> array(array('element' => $user))

o el formulario directamente

Código PHP:
Ver original
  1. 'callbackOptions'=> array(array('context' => $this))

Saludos.
__________________
http://es.phptherightway.com/
thats us riders :)

Etiquetas: zend_validate, zend-framework
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 08:32.