Первая проблема заключается в том, что по умолчанию Обработка ошибок ожидает массив ошибок, с которыми нужно работать;к этому элементу может быть прикреплено несколько валидаторов.Вот почему неупорядоченный список очень хорошо подходит для этой ситуации.
Тем не менее, желаемый результат предполагает одно сообщение на элемент, поэтому возникает вопрос: откуда вы хотите, чтобы это сообщение возникло?Хотите ли вы указать это одно сообщение независимо от сообщений, созданных валидаторами, или вы хотите получить, скажем, первое сообщение из всех сообщений об ошибках, сгенерированных вашими валидаторами (хотя, я полагаю, будет только один валидатор?вот откуда вы знаете, что вам нужно только одно сообщение?
В любом случае я вижу специальный декоратор.В каждом случае метод render()
проверяет ошибки элемента, и при наличии ошибок вы «получаете сообщение об ошибке» и визуализируете нужную разметку.
В первом случае - вы хотите указать одно сообщение, независимо от сообщений, созданных самими валидаторами - ваш пользовательский декоратор может принять один параметр 'message'.
Во второмВ этом случае вы просто получаете первое сообщение об ошибке.
Как всегда, при написании пользовательских декораторов вы, вероятно, поместите их в свое собственное псевдо-пространство имен, а затем зарегистрируете это пространство имен с помощью элемента.
В качестве альтернативы, я мог неправильно понять ваше намерение.Возможно, вы открыты для нескольких тегов
.В этом случае вы можете использовать стандартный декоратор Errors
, но он нужен для вызова пользовательского FormErrors
помощника вида, расширяющего стандартный FormErrors
помощник вида, который переопределяет защищенные элементы следующим образом:
protected $_htmlElementEnd = '</p></div>';
protected $_htmlElementStart = '<div%s><p>';
protected $_htmlElementSeparator = '</p><p>';
Как всегда, вы, вероятно, поместите свой собственный помощник вида в ваше собственное пространство псевдонимов и зарегистрируете это пространство имен с объектом представления.
Ничего полностью написанного или проверенного, только некоторые мысли / идеи.Надеюсь, это поможет!