0

我想将电子邮件验证复制到注册页面。现在在电子邮件上实施以下验证。

$inputFilter->add(array(
             'name'     => 'email',
             'required' => true,
             'filters'  => array(
                 array('name' => 'StripTags'),
                 array('name' => 'StringTrim'),
             ),
             'validators' => array(
                 array(
                     'name' => 'NotEmpty',
                     'options' => array(
                        'messages' => array(
                            $isEmpty => 'Email can not be empty.',
                         ),
                     ),
                    'break_chain_on_failure' => true
                 ),
                 array(
                     'name' => 'EmailAddress',
                     'options' => array(
                        'messages' => array(
                            $invalidEmail => 'Enter Valid Email Address.'
                        )
                    )
                )
              )
             )
          );
4

1 回答 1

2

如果我理解正确,您不希望电子邮件被重复。

您可以添加Zend\Validator\Db\NoRecordExists验证器:

    'validators' = array(
    array(
        'name' => 'NotEmpty',
        'options' => array(
            'messages' => array(
                $isEmpty => 'Email can not be empty.',
            ),
        ),
        'break_chain_on_failure' => true
    ),
    array(
        'name' => 'EmailAddress',
        'options' => array(
            'messages' => array(
                $invalidEmail => 'Enter Valid Email Address.'
            )
        )
    ),
    array(
        'name' => 'Zend\Validator\Db\NoRecordExists',
        'options' => array(
            'table' => 'your_table_name',
            'field' => 'email',
            'adapter' => 'your_db_adapter'
        )
    )
)

你不应该忘记将你的注入$db_adapter到你的表单中。

于 2016-11-23T14:28:08.163 回答