当前位置:  开发笔记 > 编程语言 > 正文

Zend框架-Zend_Form装饰器问题

如何解决《Zend框架-Zend_Form装饰器问题》经验,为你挑选了1个好方法。

我有一个扩展Zend_Form这样的类(简化):

class Core_Form extends Zend_Form
{
    protected static $_elementDecorators = array(
        'ViewHelper',
        'Errors',
        array('Label'),
        array('HtmlTag', array('tag' => 'li')),
    );  

    public function loadDefaultDecorators()
    {
        $this->setElementDecorators(self::$_elementDecorators);
    }
}

然后,我使用该类创建所有表单:

class ExampleForm extends Core_Form
{
    public function init()
    {
        // Example Field
        $example = new Zend_Form_Element_Hidden('example');
        $this->addElement($example);
    }
}

在我的一种观点中,我需要显示这一字段(Zend_Form不会生成任何其他内容)。所以我认为我有:

exampleForm->example; ?>

这工作正常,除了它会生成如下所示的字段:

  • 这显然是因为我将元素装饰器设置为包括HtmlTag:tag =>'li'。

    我的问题是:如何禁用此元素的所有装饰器。隐藏的输入元素不需要装饰器。



    1> Martin Rázus..:

    设置它的最佳位置是公共函数loadDefaultDecorators()

    例如这样的:

    class ExampleForm extends Core_Form
        {
            public function init()
            {
                //Example Field
                $example = new Zend_Form_Element_Hidden('example');
                $this->addElement($example);
            }
    
            public function loadDefaultDecorators()
            {
                $this->example->setDecorators(array('ViewHelper'));
            }
        }
    

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