当前位置:  开发笔记 > 前端 > 正文

Zend Framework:如何删除Zend Form Hidden Element上的装饰器?

如何解决《ZendFramework:如何删除ZendFormHiddenElement上的装饰器?》经验,为你挑选了5个好方法。

我正在尝试删除隐藏表单元素上的默认装饰器.默认情况下,隐藏元素显示如下:

Hidden Element Label (if I had set one)

我不希望我的隐藏元素占用我页面上的空间.我想删除所有默认装饰器,所以我剩下的就是输入标签.


我怎样才能做到这一点?



1> ischenkodv..:

对于隐藏字段,您只需要一个装饰器 - ViewHelper:

$field = new Zend_Form_Element_Hidden('id');
$field->setDecorators(array('ViewHelper'));

这将只渲染输入字段,没有Dt-Dd包装和标签.



2> drfloob..:

从Zend Element Decorators文档:

默认装饰器不需要加载

默认情况下,在对象初始化期间加载默认装饰器.您可以通过将'disableLoadDefaultDecorators'选项传递给构造函数来禁用它:

$element = new Zend_Form_Element('foo', 
    array('disableLoadDefaultDecorators' => true)
);


便利!我使用它像$ this-> addElement('hidden','article_id',array('disableLoadDefaultDecorators'=> true)); 在我的init方法中.
使用这个解决方案,``字段根本不显示给我.

3> dittonamed..:

我用这个

$element->removeDecorator('DtDdWrapper');

摆脱特定元素周围的dt dd标签



4> 小智..:

//基于上面 - 一个向$ 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);
}



5> 小智..:

当您有大量隐藏输入时,最佳答案如下:

$elements = $this->getElements();
foreach ($elements as $elem)
    if ($elem instanceof Zend_Form_Element_Hidden)
        $elem->removeDecorator('label')->removeDecorator('HtmlTag');

推荐阅读
围脖上的博博_771
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有