Validation Zend框架:如何在Zend表单中添加自定义验证规则?
我已经创建了一个zend表单,可以与验证一起正常工作 我是否可以在此表单中为电子邮件地址添加自定义验证,例如,我希望设置验证以检查用户提供的电子邮件地址是否为hotmail,因为我只希望接受hotmail电子邮件地址Validation Zend框架:如何在Zend表单中添加自定义验证规则?,validation,email,zend-framework,zend-form,Validation,Email,Zend Framework,Zend Form,我已经创建了一个zend表单,可以与验证一起正常工作 我是否可以在此表单中为电子邮件地址添加自定义验证,例如,我希望设置验证以检查用户提供的电子邮件地址是否为hotmail,因为我只希望接受hotmail电子邮件地址 <?php class Application_Form_RegistrationForm extends Zend_Form{ public function init(){ $firstname = $this->createElemen
<?php
class Application_Form_RegistrationForm extends Zend_Form{
public function init(){
$firstname = $this->createElement('text', 'firstname');
$firstname->setLabel('Firstname: ')
->setRequired(true);
$lastname = $this->createElement('text', 'lastname');
$lastname->setLabel('Lastname: ')
->setRequired(true);
$email = $this->createElement('text', 'email_address');
$email->setLabel('Email Address: ')
->setRequired(true);
$register = $this->createElement('submit', 'register');
$register->setLabel('Create new Account')
->setIgnore(true);
$this->addElements(array(
$firstname, $lastname, $email, $register
));
}
}
?>
任何帮助都将不胜感激
class Mylib_Validate_UniqueEmail extends Zend_Validate_Abstract
{
const NOT_HOTMAIL = 'notHotmail';
protected $_messageTemplates = array(
self::NOT_HOTMAIL => "'%value%' is not a hotmail email address."
);
public function isValid($value)
{
$valueString = (string) $value;
$this->_setValue($valueString);
$email = explode('@',$value);
if (!substr_count($email[1],'hotmail') ) {
$this->_error(self:NOT_HOTMAIL);
return false;
}
return true;
}
}
这将是需要添加到表单中的验证类。您好,谢谢您的回复。也可以在自定义验证器中执行自定义数据库级验证吗?@Shouvik当然,您可以在验证器中执行所需的任何操作,例如,从模型中调用方法。如果只需要确保数据库中存在或不存在记录,则可以使用这些标准Zend验证器-