在Zend_Form中添加多个验证器

时间:2012-03-08 18:21:03

标签: zend-framework validation

我想为登录脚本创建一个表单字段,允许输入用户名或电子邮件地址。

我有一个验证器

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

哪个不起作用(因为它似乎验证了Alnum和EmailAddress)。我想验证Alnum OR EmailAddress。

有关如何执行此操作的任何建议吗?

1 个答案:

答案 0 :(得分: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;
        }
    }