Zend Framework: Как добавить пользовательское правило проверки в Zend Form? - PullRequest
0 голосов
/ 08 октября 2010

У меня есть созданная форма 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
        ));




    }

}

?>

Любая помощь будет оценена.

1 Ответ

0 голосов
/ 08 октября 2010
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;
    }
}

Это будет класс проверки, который необходимо будет добавить в форму.

...