Как написать собственный валидатор для элемента формы Zend с настроенными сообщениями об ошибках? - PullRequest
1 голос
/ 13 апреля 2010

У меня есть поле вопроса со списком разрешенных символов: A-Z, 0-9, двоеточие (:), знак вопроса (?), Запятая (,), дефис (-), апостроф ('). У меня есть регулярное выражение, которое работает нормально, в моде:

 $question->addValidator('regex', true, array(<regular expresstion>))

По умолчанию выводится сообщение об ошибке типа «не совпадает с шаблоном»

Я хочу написать собственное сообщение об ошибке, которое говорит: «в этом поле не разрешено»

Есть ли простой способ сделать это, используя существующие компоненты Zend, которые мне не хватает?

Является ли написание собственного валидатора единственным способом добиться того, чего я пытаюсь достичь? Если да, то как мне написать собственный валидатор (я посмотрел документацию и не совсем понял, как я могу настроить сообщения об ошибках) Если есть какой-то другой способ, я бы тоже очень оценил этот вклад.

Спасибо, что нашли время ответить на этот вопрос!

1 Ответ

2 голосов
/ 14 апреля 2010

Да, пользовательский валидатор соответствует вашим потребностям. О том, как это написать, пожалуйста, обратитесь к этому руководству .

Что касается фрагмента кода, вот простой валидатор (частичный) для подтверждения идентификатора работодателя

protected $_messageTemplates = array(
    self::UNIQUE => 'The id provided is already in use',
    );

public function isValid($value, $context = null)
{
    $this->_setValue($value);

    $personnel = new Personnel();
    $isValid = true;

    if( $personnel->isExistingIdEmployee($value) && ($value != $this->_id) ) {
        $this->_error(self::UNIQUE);
        $isValid = false;
    }

    return $isValid;
}
...