Zend framework2 zendframework 2 inputfilter自定义默认错误消息

Zend framework2 zendframework 2 inputfilter自定义默认错误消息,zend-framework2,Zend Framework2,我正在尝试自定义默认错误消息“值是必需的,不能为空” 在zf2中 我使用以下代码在inputfilter的验证器中添加自定义默认错误消息 $inputFilter->add($factory->createInput(array( 'name' => 'username', 'required' => true, 'filters' => array(

我正在尝试自定义默认错误消息“
值是必需的,不能为空”
在zf2中

我使用以下代码在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!' 
                            ),                            
                        ),
                    ),
                ),
            )));
但我得到以下错误

Zend\Validator\Exception\InvalidArgumentException

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

Message:
    No message template exists for key 'isEmpty'
我做错了什么

试试这个

$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!' 
                            ),
                        ),
                    ),
                ),
            )));


StringLength验证器不会检查输入是否为空。它检查长度。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",
);
有关直接方法,请参见@Developer的示例。虽然我建议使用骆驼式的验证器命名,但是要使用
'name'=>'NotEmpty'
而不是
'name'=>“not_empty”


如果看到每个验证程序类的代码,可以检查存在哪些messageTemplates。您可以在
/vendor/zendframework/zendframework/library/Zend/Validator/*

下找到它们。您还可以将inputFilter的错误消息设置为:

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

嘿,tje可能的键(“stringLengthTooShort”、\Zend\Validator\NotEmpty::是空的,“stringLengthTooLong”)在哪里被记录?