Как мне написать собственный валидатор для элемента формы zend с настраиваемыми сообщениями об ошибках?

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

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

Сообщение об ошибке по умолчанию выглядит примерно так: '' 'не соответствует шаблону' '

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

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

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

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


person Mallika Iyer    schedule 13.04.2010    source источник


Ответы (1)


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

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

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;
}
person Hanseh    schedule 14.04.2010