2010-03-15 16 views
6

estoy validar un campo de texto en mi forma de la siguiente manera:mensaje de error personalizado significativo para Zend RegEx Validador

$name = new Zend_Form_Element_Text('name'); 

$name->setLabel('First Name:') 
     ->setRequired(true) 
     ->addFilter(new Zend_Filter_StringTrim()) 
     ->addValidator('regex',true,array('/^[(a-zA-Z0-9)]+$/')) 
     ->addErrorMessage('Please enter a valid first name'); 

Lo que estoy tratando de lograr es - ¿Cómo puedo mostrar un mensaje de error significativo? Por ejemplo: si el nombre es 'XYZ-', ¿cómo puedo mostrar '- no está permitido en el primer nombre.'

¿Hay alguna manera de acceder a qué carácter está fallando la expresión regular? ¿Recomendarías algo más?

Pensé en escribir un validador personalizado, pero la expresión regular es bastante simple, así que no veo el punto. No pude encontrar una documentación decente para el validador Zend 'regex' en cualquier lugar.

Si no invalido el mensaje de error predeterminado, simplemente consigo algo como: ';;; hhbhbhb' no coincide con el patrón '/^[(a-zA-Z0-9)] + $/'- que obviamente no quiero mostrar al usuario.

Agradeceria sus entradas.

Respuesta

1

¿Qué le parece decirle al usuario en términos simples cuáles son sus restricciones? Al igual que

Error: Only the letters A to Z and numbers are allowed. 

(Lo cual me lleva a la pregunta de por qué nombres pueden contener números ...)

+0

Hola, este fue solo un ejemplo ... podría ser cualquier campo (no necesariamente el primer nombre) pero es un ejemplo del problema que estoy enfrentando. Eso es todo ... –

+1

Creo que estaba preguntando * cómo * para establecer un mensaje, no qué mensaje establecer –

+0

@Marcus Downing: No lo creo. Ella ya sabe cómo configurar un mensaje (ver su código de muestra), y quería saber cómo generar un mensaje que se "adapte" a la entrada del usuario. Lo cual desaconsejé. –

15

para su mensaje (s) de error personalizado en validadores de Zend standart sólo tiene que pasar la matriz messages al validador mientras instanciando. Es una matriz, cuyas claves son tipos de error (ver más adelante) y valores - mensajes de error.

->addValidator('regex', true, 
         array(
          'pattern'=>'/^[(a-zA-Z0-9)]+$/', 
          'messages'=>array(
           'regexNotMatch'=>'Your own custom error message' 
          ) 
         ) 
) 

Para ver las claves de error para otros tipos de error del validador elegido, puede consultar su código fuente. Para el validador regex está ubicado en {Zend Framework Library} /Zend/Validate/Regex.php.

Buena suerte en la validación :).

Cuestiones relacionadas