Добавление нескольких валидаторов в Zend_Form - PullRequest
1 голос
/ 08 марта 2012

Я хочу создать поле формы для сценария входа в систему, позволяющее вводить имя пользователя или адрес электронной почты.

У меня есть валидатор

$loginName = new Zend_Form_Element_Text('loginName');
$loginName->addValidators(array('Alnum', 'EmailAddress');

, который не работает(потому что он, кажется, проверяет Alnum AND EmailAddress).Я хотел бы проверить Alnum ИЛИ EmailAddress.

Есть предложения о том, как это сделать?

1 Ответ

5 голосов
/ 09 марта 2012

У вас есть два варианта.Вы можете использовать валидатор 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;
        }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...