Хорошо, я узнал, как это сделать. Постепенно декораторы начинают обретать смысл для меня:
$decorators = array(
'Label',
array( 'Errors', array( 'placement' => 'prepend' ) ),
array( array( 'dt' => 'HtmlTag' ), array( 'tag' => 'dt' ) ),
array( array( 'ddOpen' => 'HtmlTag' ), array( 'tag' => 'dd', 'openOnly' => true, 'placement' => 'append' ) ),
array( 'ViewHelper' ),
array( array( 'ddClose' => 'HtmlTag' ), array( 'tag' => 'dd', 'closeOnly' => true, 'placement' => 'append' ) )
);
Что делает следующее:
- Первый рендеринг метки
- Затем добавьте (по умолчанию = добавьте) ошибки
- Обернуть (по умолчанию) все предыдущее содержимое в HtmlTag (dt)
- Затем добавьте (по умолчанию = перенос) открывающий тег HtmlTag (dd)
- Затем добавьте (по умолчанию) ViewHelper
- Затем добавьте (по умолчанию = wrap) закрывающий тег HtmlTag (dd)
Затем установите декораторы:
// be sure to only set them, after you have added the relevant elements to the form
$this->setElementDecorators( $decorators );
PS:
Имейте в виду, что мой конкретный пример создает недействительный HTML. ;-) Я только позже узнал, что <ul>
элементы не допускаются в <dt>
элементах с DOCTYPE
HTML 4.01 strict