我有一个像这样扩展 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);
    }
}

在我的一个 View 中,我只需要显示这个字段(没有 Zend_Form 生成的任何其他字段)。所以在我看来,我有这个:
<?php echo $this->exampleForm->example; ?>

这工作正常,除了它生成这样的字段:
<li><input type="hidden" name="example" value=""></li>

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

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

最佳答案

设置它的最佳位置是公共(public)函数 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'));
        }
    }

关于php - Zend 框架 - Zend_Form 装饰器问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/376188/

10-13 00:42