Zend Decorator - простой способ обернуть метку dt и ввод dd в div с идентификатором ввода - PullRequest
0 голосов
/ 21 октября 2011

Моя цель - позволить ZendForm генерировать мою форму следующим образом: оболочка DIV, которая включает в себя обычные теги Zend DD и DT ... Мой DIV должен иметь тег ID с идентификатором элемента, подобным этому:*

<dl>
<div id="65-div">
<dt id="65-label"><label for="65" class="required">Nome</label></dt>
<dd id="65-element">
    <input type="text" name="65" id="65" value="">
</dd>
</div>
<div id="66-div">
...... ...
</div>
</dl>

Я смог достичь своей цели, сделав это:

$Element = $this->createElement('text', $result->request_field__ID);

$Element->clearDecorators()
->addDecorator('ViewHelper')
->addDecorator('Errors')
->addDecorator(array('data'=>'HtmlTag'), array('tag' => 'dd', 'id'  => $Element->getId() . '-div', 'class' => 'zendData'))
->addDecorator(array('labelDivOpen' => 'HtmlTag'), array('tag' => 'dt', 'placement' => 'prepend', 'closeOnly' => true))
->addDecorator('Label')
->addDecorator(array('labelDivClose' => 'HtmlTag'), array('tag' => 'dt', 'id'  => $Element->getId() . '-label', 'class'=>'zendLabel','placement' => 'prepend', 'openOnly' => true))
->addDecorator(array('row' => 'HtmlTag'), array('tag' => 'div', 'id'  => $Element->getId() . '-div'));

Это лучший способ?

Почему я это делаю?

Поскольку я генерирую свою форму динамически ... И я хочу скрыть некоторые поля и затем отобразитьэто с Jquery, если какие-то условия произошли ...

Чтобы скрыть свое поле, я использую:

$Element->getDecorator('row')->setOptions(array('style' => 'display:none;'));

Это также лучший способ?

1 Ответ

2 голосов
/ 21 октября 2011

Это не похоже на действительный HTML для меня. Вам было бы намного лучше отказаться от div и использовать идентификаторы на dt и dd, которые уже есть, поэтому просто не отображайте их, когда хотите скрыть элемент. Кроме того, идентификаторы не могут начинаться с цифры, поэтому вы можете изменить схему именования так, чтобы вместо нее было element-65.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...