ZF2表单验证无法正常用于电子邮件

时间:2013-12-28 10:33:18

标签: regex zend-framework2

我有一个输入框,其中type =“email”并使用zend验证器

进行验证
<input type="email" name="email" > email </input>
'email' => array(
                'required' => true,
                'validators' => array(

                    array(
                        'name' => 'Regex',
                        'options' => array(
                            'pattern'=>'/^[a-zA-Z0-9.!#$%&\'*+\/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*$/', 
                            'messages' => array(
                                \Zend\Validator\Regex::NOT_MATCH=>'Please fill correct email ',
                            )
                        ),
                        'break_chain_on_failure' => true
                    ),

                ),

问题是我是否使用另一个数组来检查

  

IS_EMPTY

zend regex再次显示上面的错误而不是显示默认的zend正则表达式错误,如果我删除IS_EMPTY那么它工作正常。正则表达式错误是

 1. input does not match to expression '/^[a-zA-Z0-9.!#$%&\'*+\/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*$/'

完全无法理解为什么这项工作没有空的检查而且没有与它一起工作

2 个答案:

答案 0 :(得分:2)

您不需要使用notEmpty,您只需要将字段设置为&#34; required&#34;并指定错误消息:

    $this->add(array(
        'name' => 'email',
        'required' => true,
        'error_message' => 'Please entry e-mail.',
        'validators' => array(
            array(
                'name' => 'EmailAddress',
                'options' => array (
                    'messages' => array(EmailAddress::INVALID => 'Please specify a valid e-mail.'),
                ),
                'break_chain_on_failure' => true,
            ),
        ),
    ));

答案 1 :(得分:0)

我也有同样的困境,这个&#34;输入与表达式&#34;不匹配始终显示而不是EmailAddress :: INVALID_FORMAT的消息。但我发现你发布的代码修复了我的错误。这是我的代码。

'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 => '',
                    )
                ),
            ),
        ),