У меня есть два текстовых поля в форме, которые мне нужны, чтобы убедиться, что они не содержат пустых значений и не содержат одинаковую строку.
Пользовательский валидатор, который я написал, расширяет Zend_Validate_Abstract и работает правильно, так как передает правильные сообщения об ошибках. В этом случае либо: isEmpty или isMatch.
Однако в документации сказано использовать addErrorMessages для определения правильных отображаемых сообщений об ошибках.
в этом случае я приложил
->addErrorMessages(array("isEmpty"=>"foo", "isMatch"=>"bar"));
в поле формы.
В соответствии со всем, что я прочитал, если я возвращаю isEmpty из isValid (), мое сообщение об ошибке должно иметь значение «foo», а если я возвращаю «isMatch», то оно должно читать «bar».
Это не тот случай, с которым я сталкиваюсь. Если я верну false из valid, независимо от того, что я установил $ this -> _ error (), мое сообщение об ошибке отображает «foo», или что-то еще, что у меня есть в index [0] массива сообщений об ошибках.
Если я не определяю errorMessages, то я просто получаю код ошибки, который я передал обратно для отображения, и получаю правильный, в зависимости от того, что я передал обратно.
Как мне перехватить код ошибки и отобразить правильное сообщение об ошибке в моей форме?
Исправление, которое я реализовал, до тех пор, пока я не разберусь с ним, заключается в передаче полного сообщения в виде кода ошибки из пользовательского валидатора. В этом случае это будет работать, но сообщение об ошибке относится только к этой странице и не позволяет повторно использовать код.
Вещи, которые я уже пробовал:
Я уже пробовал цепочку валидатора, чтобы мой валидатор проверял только совпадения:
->setRequired("true")
->addValidator("NotEmpty")
->addErrorMessage("URL May Not Be Empty")
->addValidator([*customValidator]*)
->addErrorMessage("X and Y urls may not be the same")
Но, опять же, если выдается сообщение об ошибке, отображается последнее установленное сообщение об ошибке, независимо от того, какая ошибка действительно есть.
Я не совсем уверен, куда идти отсюда.
Есть предложения?