Php Zend Framework 2:NoteEmpty验证程序消息

Php Zend Framework 2:NoteEmpty验证程序消息,php,forms,validation,zend-framework2,Php,Forms,Validation,Zend Framework2,我有一个带有元素username的表单。有两个验证器:NotEmpty和StringLength。StringLength的自定义错误消息正在工作,但不知何故它没有使用NotEmpty验证器的自定义错误消息。在ZF1中,当需要一个可以关闭的元素时,会自动添加NoteEmpty验证器。我在ZF2中找不到这样的选项,也许我的NoteEmpty验证器没有被使用,因为它已经被所需的标志添加了 $inputFilter->add($factory->createInput(array(

我有一个带有元素
username
的表单。有两个验证器:
NotEmpty
StringLength
StringLength
的自定义错误消息正在工作,但不知何故它没有使用
NotEmpty
验证器的自定义错误消息。在ZF1中,当需要一个可以关闭的元素时,会自动添加NoteEmpty验证器。我在ZF2中找不到这样的选项,也许我的NoteEmpty验证器没有被使用,因为它已经被所需的标志添加了

    $inputFilter->add($factory->createInput(array(
        'name'     => 'username',
        'required' => true,
        'filters'  => array(
            array(
                'name' => 'StringTrim'
            ),
        ),
        'validators' => array(
            array(
                'name' => 'NotEmpty',
                'options' => array(
                    'messages' => array(
                        NotEmpty::IS_EMPTY => 'Bitte geben Sie Ihren Benutzernamen ein.',
                    ),
                ),
            ),
            array(
                'name' => 'StringLength',
                'options' => array(
                    'min' => 3,
                    'max' => 45,
                    'messages' => array(
                        StringLength::TOO_SHORT => 'Der Benutzername muss mindestens 3 Zeichene lang sein.',
                        StringLength::TOO_LONG => 'Der Benutzername darf maximal 45 Zeichen lang sein.',
                    )
                ),
            ),
        ),
    )));

这是我使用的版本中的一个bug。在GitHub上更新到最新版本后,它可以正常工作。

默认情况下,ZF2表单在创建不同表单元素时会自动为它们添加验证器。要防止添加默认值并仅显示验证器,您需要添加到表单构造函数:

$this->setUseInputFilterDefaults(false)


这将阻止表单对象添加这些默认验证器。现在,当您将自己的NotEmpty或任何其他元素、validator与自定义消息一起添加时,将使用该消息而不是默认消息。

首先要做的是
var\u dump($form->getMessages())
查看实际使用的消息键。可能在is_空检查之前检查了所需的消息,因此您甚至没有到达is_空检查。检查
NotEmpty::IS_EMPTY
是否等于输出中的消息键messages@Sam,ofc是同一把钥匙。。。