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

Problema con Zend_Validate_Identical

Estas en el tema de Problema con Zend_Validate_Identical en el foro de Zend en Foros del Web. Estoy haciendo un formulario con campo de contraseña y confirmar contraseña. Y En los dos campos copio y pego exactamente este valor "aaaaaaaa" sin comillas. ...
  #1 (permalink)  
Antiguo 19/03/2009, 13:31
 
Fecha de Ingreso: enero-2005
Mensajes: 149
Antigüedad: 19 años, 11 meses
Puntos: 2
Problema con Zend_Validate_Identical

Estoy haciendo un formulario con campo de contraseña y confirmar contraseña. Y En los dos campos copio y pego exactamente este valor "aaaaaaaa" sin comillas. Pero el validador sigue diciendome "Tokens do not match". Es decir, el validador parece que piensa que los valores no coinciden. ¿ Pero si realmente son exactamente iguales... entonces por que no funciona ? ¿ Donde está el error ?

¿ Es posible que este validador sea experimental ? En la "Reference Guide" no aparece. Pero si lo hace en la API. No hay prácticamente documentación...

Os pongo el código referente a los elementos de los passwords

Código PHP:
$password = new Zend_Form_Element_Text('password');
$password->addFilter('StringTrim')
         ->
addValidator('StringLength'false, array(8))
         ->
setRequired(true)
         ->
setLabel('Contraseña'); 
        
$password2 = new Zend_Form_Element_Text('password2');
$password2->addFilter('StringTrim')
          ->
addValidator('StringLength'false, array(8))
          ->
addValidator(new Zend_Validate_Identical('password'))
          ->
setRequired(true)
          ->
setLabel('Confirmar contraseña'); 
  #2 (permalink)  
Antiguo 19/03/2009, 14:06
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 6 meses
Puntos: 2135
Respuesta: Problema con Zend_Validate_Identical

El Validador Zend_Validate_Identical, sirve para validar contra un valor exacto en este caso, valida que tu cadena sea igual a "password", lo que tienes que hacer es crear un validador personalizado y agregarlo a tu form:
Código php:
Ver original
  1. class My_Validate_PasswordConfirmation extends Zend_Validate_Abstract
  2. {
  3.     const NOT_MATCH = 'notMatch';
  4.  
  5.     protected $_messageTemplates = array(
  6.         self::NOT_MATCH => 'Password confirmation does not match'
  7.     );
  8.  
  9.     public function isValid($value, $context = null)
  10.     {
  11.         $value = (string) $value;
  12.         $this->_setValue($value);
  13.  
  14.         if (is_array($context)) {
  15.             if (isset($context['password_confirm'])
  16.                 && ($value == $context['password_confirm']))
  17.             {
  18.                 return true;
  19.             }
  20.         } elseif (is_string($context) && ($value == $context)) {
  21.             return true;
  22.         }
  23.  
  24.         $this->_error(self::NOT_MATCH);
  25.         return false;
  26.     }
  27. }

Ejemplo tomado de: http://framework.zend.com/manual/en/...nts.validators

Saludos.
  #3 (permalink)  
Antiguo 28/03/2009, 11:41
 
Fecha de Ingreso: enero-2005
Mensajes: 149
Antigüedad: 19 años, 11 meses
Puntos: 2
Respuesta: Problema con Zend_Validate_Identical

Uhmmmm.....

El validador, lo probé, lo puedo usar y funciona. Pero no acabo de entender de donde sale la key 'password_confirm' del array $context...

Podría entender que internamente el context usase sobrecargas get/set o arrayAccess y asignase su valor a cierta key... pero la key 'password_confirm' sea password o email o pericoElDeLosPalotes es conceptual... Luego, donde se define ? de donde sale ? cuando ? Quizá es por tener el mismo nombre que el asignado al "element" ?

Gracias

Última edición por yoguuu; 28/03/2009 a las 11:48
  #4 (permalink)  
Antiguo 30/03/2009, 10:31
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 6 meses
Puntos: 2135
Respuesta: Problema con Zend_Validate_Identical

$context es un array con los datos de tu formulario, con el puedes poder leer cualquier valor de tu form y poder hacer validaciones en contra de ese valor, util como en este caso para checar que dos elementos sean iguales.

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 17:50.