我正在尝试删除隐藏表单元素上的默认装饰器.默认情况下,隐藏元素显示如下:
我不希望我的隐藏元素占用我页面上的空间.我想删除所有默认装饰器,所以我剩下的就是输入标签.
我怎样才能做到这一点?
对于隐藏字段,您只需要一个装饰器 - ViewHelper:
$field = new Zend_Form_Element_Hidden('id'); $field->setDecorators(array('ViewHelper'));
这将只渲染输入字段,没有Dt-Dd包装和标签.
从Zend Element Decorators文档:
默认装饰器不需要加载
默认情况下,在对象初始化期间加载默认装饰器.您可以通过将'disableLoadDefaultDecorators'选项传递给构造函数来禁用它:
$element = new Zend_Form_Element('foo', array('disableLoadDefaultDecorators' => true) );
我用这个
$element->removeDecorator('DtDdWrapper');
摆脱特定元素周围的dt dd标签
//基于上面 - 一个向$ this表单添加隐藏元素的简单函数
/** * Add Hidden Element * @param $field * @param value * @return nothing - adds hidden element * */ public function addHid($field, $value){ $hiddenIdField = new Zend_Form_Element_Hidden($field); $hiddenIdField->setValue($value) ->removeDecorator('label') ->removeDecorator('HtmlTag'); $this->addElement($hiddenIdField); }
当您有大量隐藏输入时,最佳答案如下:
$elements = $this->getElements(); foreach ($elements as $elem) if ($elem instanceof Zend_Form_Element_Hidden) $elem->removeDecorator('label')->removeDecorator('HtmlTag');