Добавить валидатор 2 раза в элементе на Zend - PullRequest
1 голос
/ 10 ноября 2011

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

Это полезно для выполнения многих пользовательских проверок с помощью картографов таблиц базы данных.

Проблема заключается в том, чтоЯ не могу добавить этот валидатор более одного раза в элемент, и мне нужно это сделать ...

Пример:

У меня есть форма входа, котораяесть элементы имени пользователя и пароля.Для имени пользователя мне нужно проверить с помощью этого валидатора, если он уже существует в базе данных, и, если он существует, мне нужно проверить, активирована ли выбранная учетная запись ...

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

Вот конструктор Валидатора:

/**
 *$class is a class instance
 *$function is the function name to execute in the class
 *$invalidReturns specifies when the validator should return the error message (default is when the function returns null, false or empty string)
 *$tokens are used as parameters of the function to execute
*/
public function __construct($class, $function, $invalidReturns=null, $tokens=null)
{
    $this->class = $class;
    $this->function = $function;
    $this->tokens = $tokens;
    $this->returns = $invalidReturns;
}

Как можноЯ решаю эту проблему?Есть ли способ создать класс в PHP с динамическим именем?Есть ли способ добавить Validator того же класса к элементу в Zend, или я должен изменить свой Valitor, чтобы он возвращал более одного сообщения и передавал их в конструктор?

1 Ответ

0 голосов
/ 11 ноября 2011

Решение, предоставленное Kees Schepers в комментариях, должно работать, но, поскольку я сделал свой собственный "Zend_Validate_Callback", я мог изменить способ его работы, чтобы разрешить определение более одного сообщения.

Теперь все работает хорошо =)

В любом случае, спасибо Кису Шеперсу. В следующий раз я буду использовать Zend_Validate_Callback вместо того, чтобы выполнять большую часть работы x).

...