0

我正在写一个注册码,我正在寻找电子邮件的唯一性。如果用户输入已注册的电子邮件,则表单应抛出错误。

我尝试过 NoRecordExists 和 RecordExists。没有人在这里工作

我已经实现了“Db\NoRecordExists”,但它不起作用。它没有抛出错误,也没有在 Db 中检查电子邮件。

我的控制器就像

$sm = $this->getServiceLocator();
    $dbAdapter = $sm->get('Zend\Db\Adapter\Adapter');   
    if ($request->isPost()) {                           
        #Filter the Input
        $form->setInputFilter(new RegisterStepFirstFilter($dbAdapter)); 
        $form->setData($request->getPost()); 
        if (!$form->isValid()) {                                
            #error comes
            $this->flashMessenger()->addMessage('Oops an error is occured');            
        }else{                      
            #No error.Proceed with Registration

        }
    }

我的注册过滤器类就像

namespace User\Form;
    use Zend\InputFilter\InputFilter;
    class RegisterStepFirstFilter extends InputFilter
    {
        private $dbAdapter;
        public function __construct($dbAdapter) {  
            $this->add(array(
                'name' => 'user_email',
                'required' => true,
                'filters' => array(
                array('name' => 'StripTags'),
                        array('name' => 'StringTrim'),
                        array('name' => 'HtmlEntities'),

                ),
                    'validators' => array(
                                array('name' => 'EmailAddress'),
                                    array('name' => 'StringLength', 'options' => array('encoding' => 'UTF-8', 'min' => 1, 'max' => 200,),
                                    array('name' => 'Db\NoRecordExists', 'options' => array('table' => 'y2m_user','field' => 'user_email',  'adapter' => $dbAdapter),),
                ),
                    ),
            ));




        }

    }}

注册表单与所有其他验证器完美配合。但它没有检查电子邮件的唯一性,也没有抛出任何错误(我已经启用了错误)

任何建议将不胜感激。

4

2 回答 2

1

问题是因为 Type.I 忘了在过滤器后面加上逗号。奇怪的是,zf2 没有给出任何错误

我有更新验证器

'validators' => array(
                            array('name' => 'EmailAddress'),
                            array('name' => 'StringLength', 'options' => array('encoding' => 'UTF-8', 'min' => 1, 'max' => 200,),),
                            array('name' => 'Db\NoRecordExists', 'options' => array('table' => 'y2m_user','field' => 'user_email',  'adapter' => $dbAdapter),),

            ),
于 2013-07-25T12:00:21.967 回答
0

你使用了错误的验证器,你需要使用 Db\NoRecordExists。

于 2013-07-25T06:58:10.710 回答