2013-07-25 52 views
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),), 
       ), 
        ), 
      )); 




     } 

    }} 

登記表完美的作品與所有其他驗證。但它不檢查電子郵件的唯一性不是它拋出任何錯誤(我已經啓用了錯誤)

任何建議,將不勝感激。

+0

可能重複的[ZF2表類問題](http://stackoverflow.com/questions/17833037/zf2-form-class-issue) –

回答

0

您使用錯誤的驗證器,您需要使用Db \ NoRecordExists。

+0

我也試過,也沒有工作。沒有錯誤正在提交 – jyoti

+0

@jyoti在第二次查看後,我想StringLength Validator的結束時會出錯)。嘗試array('name'=>'StringLength','options'=> array('encoding'=>'UTF-8','min'=> 1,'max'=> 200,)), – Weteef

+0

也改變了括號。仍然是我沒有顯示。阿米我做錯了或我正在做正確的方式? – jyoti

1

問題是因爲Type.I的忘了一個逗號在過濾器.Strange後,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),), 

      ), 
相關問題