我在寫一個註冊碼,我正在尋找電子郵件的唯一性。如果用戶輸入已經註冊的電子郵件,則表單應該出錯。如何檢查一個已經在表格中註冊的電子郵件
我已經嘗試了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),),
),
),
));
}
}}
登記表完美的作品與所有其他驗證。但它不檢查電子郵件的唯一性不是它拋出任何錯誤(我已經啓用了錯誤)
任何建議,將不勝感激。
可能重複的[ZF2表類問題](http://stackoverflow.com/questions/17833037/zf2-form-class-issue) –