Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Validation Zend框架:如何在Zend表单中添加自定义验证规则?_Validation_Email_Zend Framework_Zend Form - Fatal编程技术网

Validation Zend框架:如何在Zend表单中添加自定义验证规则?

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

我已经创建了一个zend表单,可以与验证一起正常工作

我是否可以在此表单中为电子邮件地址添加自定义验证,例如,我希望设置验证以检查用户提供的电子邮件地址是否为hotmail,因为我只希望接受hotmail电子邮件地址

<?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验证器-