【问题标题】:Zend Framework: How to add a custom validation rule in Zend Form?Zend Framework:如何在 Zend Form 中添加自定义验证规则?
【发布时间】:2010-10-08 05:20:31
【问题描述】:

我创建了一个 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
        ));




    }

}

?>

我们将不胜感激。

【问题讨论】:

    标签: validation email zend-framework zend-form


    【解决方案1】:
    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 验证器 - framework.zend.com/manual/en/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多