Zend <dt><dd> декораторы: что я теряю, удаляя их - PullRequest
2 голосов
/ 06 октября 2010

Этот вопрос относится только к Zend_Form.Zend_Form добавляет стандартные декораторы, такие как <dd> <dt> <dl>.Что я потеряю, если я должен был удалить их?Используются ли они самим Zend_Form для сообщений об ошибках или по любой другой причине?

Ответы [ 3 ]

6 голосов
/ 06 октября 2010

Они предназначены исключительно для структурирования вывода ваших элементов Zend Form в списке определений.Отрисовка ошибок в вашей форме контролируется с помощью Error Decorator.

См. Эту серию статей Мэтью Вейера О'Пинни:

и учебное пособие Роба Аллена по Zend_Form:

2 голосов
/ 14 октября 2010

1) Самый простой и, возможно, лучший способ изменить внешний вид форм с помощью CSS, а не с помощью разметки (путем написания собственных декораторов), по крайней мере, если вы не опытный программист. При удалении декоратора DdDt многие возможности CSS, такие как поля ввода / метки / позиционирование списков ошибок, раскраска, отступы и т. Д., Теряются. Например, к <dt> или <dd> вы можете добавить собственный класс в инициализацию формы, который впоследствии можно будет стилизовать, удовлетворяя ваши конкретные потребности.

См. Код:

$comment = $this->createElement('textarea','comment',array(
    'label'=>'Post a comment',
    'required'=>true
))
  ->setDecorators(array(
    'ViewHelper', 
    'label', 
    'Errors', 
    array(
       'HtmlTag', 
       array(
          'tag' => 'dd', 
          'class'=>'elevatedField'
       )
    ) 
 ))
; 

Теперь в таблице стилей CSS в правиле .elevatedField{} вы можете определить конкретный вид этого поля textarea. На самом деле, этот пример не для декоратора DdDt по умолчанию, но он хорошо объясняет способы использования тега <dd>. Почти то же самое для декоратора DdDt по умолчанию.

Посмотрите, чего можно достичь только с помощью css: http://robertbasic.com/blog/styling-the-default-zend_form-layout/ И это не предел.

2) Семантика разметки html тоже потеряна, что почти не имеет смысла, по крайней мере на сегодняшний день.

Кроме того, DdDt не используются самим Zend_Form для отчетов об ошибках - для этого есть еще один стандартный декоратор с именем 'Errors'.

1 голос
/ 06 октября 2010
$element->removeDecorator('DtDdWrapper');

OR $element->clearDecorators(); и настройка собственного декоратора;

...