6

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

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

2 回答 2

5

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

$this->setUseInputFilterDefaults(false);

这将阻止 Form 对象添加那些默认验证器。现在,当您添加自己的 NotEmpty 或任何其他元素时,带有自定义消息的验证器,将使用该消息而不是默认消息。

于 2013-01-28T20:50:26.860 回答
2

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

于 2012-08-24T09:25:35.563 回答