我想为登录脚本创建一个表单字段,允许输入用户名或电子邮件地址。
我有一个验证器
$loginName = new Zend_Form_Element_Text('loginName');
$loginName->addValidators(array('Alnum', 'EmailAddress');
哪个不起作用(因为它似乎验证了Alnum和EmailAddress)。我想验证Alnum OR EmailAddress。
有关如何执行此操作的任何建议吗?
答案 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;
}
}