我正在写一个注册码,我正在寻找电子邮件的唯一性。如果用户输入已注册的电子邮件,则表单应抛出错误。
我尝试过 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),),
),
),
));
}
}}
注册表单与所有其他验证器完美配合。但它没有检查电子邮件的唯一性,也没有抛出任何错误(我已经启用了错误)
任何建议将不胜感激。