Zend 表单显示组装饰器
Posted
技术标签:
【中文标题】Zend 表单显示组装饰器【英文标题】:Zend Form Display Group Decorators 【发布时间】:2011-06-24 22:32:27 【问题描述】:当您查看 下面的标记你会看到有一个带有 id address-label 的 dt 和下面的 dd,我想删除这些但保留 字段集。
要添加我正在使用这个$this->addDisplayGroup(array(...), 'legend' => 'address');
的显示组
添加每个元素后,我的表单初始化类。是否有一些装饰器可以用来移除
我不想要的元素?
<form id="CreateAddress" enctype="application/x-www-form-urlencoded" action="" method="post">
<dl class="zend_form">
<dt id="address-label"> </dt>
<dd id="address-element">
<fieldset id="fieldset-address">
<legend>Address</legend>
<dl>
<dt id="addressLine1-label">
<label for="addressLine1" class="required">Address Line 1</label>
</dt>
<dd id="addressLine1-element">
<input type="text" name="addressLine1" id="addressLine1" value="">
</dd>
...etc...
</fieldset>
</dd>
...buttons...
</dl>
</form>
谢谢, 马丁
【问题讨论】:
【参考方案1】:那么交易是什么?
$group = $form->getDisplayGroup ('the name of the group');
$group->removeDecorator ('Zend_Form_Decorator_DtDdWrapper');
【讨论】:
【参考方案2】:removeDecorator
参数 Zend_Form_Decorator_DtDdWrapper
不起作用所以我使用了:
$group = $form->getDisplayGroup('the name of the group');
$group->removeDecorator('DtDdWrapper');
【讨论】:
【参考方案3】:这样您就不必手动从每个显示组中单独删除 DtDd,您可以使用:
foreach ($this->_displayGroups as $dg)
$dg->removeDecorator('DtDdWrapper');
【讨论】:
【参考方案4】:如果你想将它应用到所有定义的 Zend 表单显示组(针对特定表单),一个更简洁的方法是:
$form->setDisplayGroupDecorators(array(
'FormElements',
'Fieldset',
));
注意:这只会改变之前定义的显示组。
【讨论】:
以上是关于Zend 表单显示组装饰器的主要内容,如果未能解决你的问题,请参考以下文章
Zend Framework 表单、装饰器和验证:我应该回到纯 HTML 吗?
在 Zend Framework 中,如何使用装饰器将表单元素包装在标签中?