【问题标题】:zend decorator easy way wrap dt label and dd input inside a div with the id of the inputzend 装饰器简单的方法将 dt 标签和 dd 输入包装在带有输入 id 的 div 中
【发布时间】:2011-12-12 10:09:57
【问题描述】:

我的目标是让 ZendForm 以这种方式生成我的表单: 一个包含普通 DD 和 DT Zend 标签的 DIV 包装器...我的 DIV 需要具有带有元素 ID 的 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;'));

这也是最好的方法吗?

【问题讨论】:

    标签: html zend-framework hide decorator


    【解决方案1】:

    对我来说,这看起来不像是有效的 HTML。删除 div 并使用已经存在的 dtdd 上的 ID 会好得多,所以当你想隐藏元素时不要显示这些。此外,ID 不能以数字开头,因此您可能需要颠倒您的命名方案,以便改为 element-65

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-07-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-17
      • 1970-01-01
      相关资源
      最近更新 更多