如何告诉Zend验证器以任何方式使用唯一的验证消息

时间:2013-08-09 09:15:54

标签: zend-framework2 zend-validate

我已将 EmailAddress 验证程序添加到我的表单元素中,当我尝试提交类似 test 的内容时,它会显示2个错误:

* The input does not match against pattern '/^[a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*$/'  
* The input is not a valid email address. Use the basic forma local-part@hostname

但我不想用如此糟糕的验证信息吓唬我的用户。当然,我可以为每个验证错误重新声明该消息,但对我来说最好的是设置唯一的错误消息,如输入不是有效的电子邮件地址。使用基本格式local-part @ hostname

我无法相信zf2无法做到这一点。

1 个答案:

答案 0 :(得分:0)

我发现这段代码对我有用。我希望这也适合你。

'validators' => array(
        array (
            'name' => 'Regex',
            'options' => array(
                'pattern'=>'/^[a-zA-Z0-9.!#$%&\'*+\/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*$/',
                'messages' => array(
                    Regex::NOT_MATCH    => 'Please provide a valid email address.',
                ),
            ),
            'break_chain_on_failure' => true
        ),
        array(
            'name' => 'EmailAddress',
            'options' => array(
                'messages' => array(
                    EmailAddress::INVALID_FORMAT   => 'Please provide a valid email address.',
                    EmailAddress::DOT_ATOM         => '',
                    EmailAddress::INVALID_FORMAT   => '',
                    EmailAddress::INVALID_LOCAL_PART => '',
                    EmailAddress::QUOTED_STRING => '',
                )
            ),
        ),
    ),