2012-10-04 13 views
10

Estoy tratando de personalizar el mensaje de error predeterminado "Value is required and can't be empty" en ZF2ZendFramework 2 inputfilter mensaje de error predeterminado modifique para requisitos particulares

estoy usando siguiente código para agregar mensaje de error predeterminado Personalizar en validadores de inputfilter

$inputFilter->add($factory->createInput(array(
       'name' => 'username', 
       'required' => true, 
       'filters' => array(
        array('name' => 'StripTags'), 
        array('name' => 'StringTrim'), 
       ), 
       'validators' => array(
        array(
         'name' => 'StringLength', 
         'options' => array(
          'encoding' => 'UTF-8', 
          'min' => 4, 
          'max' => 20, 
          'messages' => array(
           'isEmpty' => 'Please enter User Name between 4 to 20 character!' 
          ),        
         ), 
        ), 
       ), 
      ))); 

Pero recibo el siguiente error.

Zend\Validator\Exception\InvalidArgumentException 

File: 
    /home/website/vendor/zendframework/zendframework/library/Zend/Validator/AbstractValidator.php:220 

Message: 
    No message template exists for key 'isEmpty' 

¿Qué estoy haciendo mal?

reference

Respuesta

21

probar esto

$inputFilter->add($factory->createInput(array(
       'name' => 'username', 
       'required' => true, 
       'filters' => array(
        array('name' => 'StripTags'), 
        array('name' => 'StringTrim'), 
       ), 
       'validators' => array(
        array(
         'name' =>'NotEmpty', 
         'options' => array(
          'messages' => array(
           \Zend\Validator\NotEmpty::IS_EMPTY => 'Please enter User Name!' 
          ), 
         ), 
        ), 
        array(
         'name' => 'StringLength', 
         'options' => array(
          'encoding' => 'UTF-8', 
          'min' => 4, 
          'max' => 20, 
          'messages' => array(
           'stringLengthTooShort' => 'Please enter User Name between 4 to 20 character!', 
           'stringLengthTooLong' => 'Please enter User Name between 4 to 20 character!' 
          ), 
         ), 
        ), 
       ), 
      ))); 

reference

Other validator set

+0

Hey, ¿dónde están tje posibles claves ("stringLengthTooShort", \ Zend \ Validator \ NotEmpty :: is_empty " stringLengthTooLong ") documentado? –

1

validador El StringLength no comprueba la entrada esté vacío o no. Verifica contra longitudes. Existen siguientes plantillas de mensajes para el validador StringLength:

const INVALID = 'stringLengthInvalid'; 
const TOO_SHORT = 'stringLengthTooShort'; 
const TOO_LONG = 'stringLengthTooLong'; 

/** 
* @var array 
*/ 
protected $messageTemplates = array(
    self::INVALID => "Invalid type given. String expected", 
    self::TOO_SHORT => "The input is less than %min% characters long", 
    self::TOO_LONG => "The input is more than %max% characters long", 
); 

Véase el ejemplo de @Developer para un enfoque directo. Aunque yo sugeriría ir con el nombramiento CamelCased de los validadores, por lo que en lugar de 'name' => 'NotEmpty''name' => 'not_empty'

Puede comprobar qué messageTemplates existe si ve el código para cada una de las clases de validación. Los encontrará bajo ./vendor/zendframework/zendframework/library/Zend/Validator/*

3

También puede configurar el mensaje de error de inputFilter manera:

$form = new ParticipantForm(); 
    $mailInput = new Input('mail'); 
    $mailInput->setRequired(true); 
    $mailInput->setErrorMessage("Empty input"); 
Cuestiones relacionadas