2012-03-08 73 views
1

我想爲登錄腳本創建一個表單字段,允許輸入用戶名或電子郵件地址。在Zend_Form中添加多個驗證器

我有一個驗證

$loginName = new Zend_Form_Element_Text('loginName'); 
$loginName->addValidators(array('Alnum', 'EmailAddress'); 

不工作(因爲它似乎驗證Alnum AND)移轉。我想驗證Alnum或EmailAddress。

有關如何做到這一點的任何建議?

回答

5

你有兩種選擇。您可以使用Regex驗證器,也可以編寫一個自定義驗證器,該驗證器本身使用Alnum和Email驗證器。

http://framework.zend.com/manual/en/zend.validate.writing_validators.html

,第二種選擇將是這個樣子:

class My_Validate_Field extends Zend_Validate_Abstract 
    { 
      
        protected $_messageTemplates = array(
            'alnumemail' => "'%value%' is not an alphanumeric string or email address" 
       ); 
      
        public function isValid($value) 
        { 
            $alnum = new \Zend_Validate_Alnum(); 
       $email = new \Zend_Validate_EmailAddress(); 

     $valid = $alnum->isValid($value) || $email->isValid($value); 

     if(!$valid) { 
      $this->_error(); 
     } 

            return $valid; 
        } 
    }