覆盖所有Zend_Form对象的特定装饰器

时间:2011-02-16 19:45:33

标签: php zend-form decorator zend-decorators

我正在设计项目样式,每个人都使用Zend_Form和默认元素。这使得无法设置提交按钮的样式。 因此,我想覆盖默认的Zend_Form装饰器以提交按钮,但不会更改创建Zend_Form的每一行。

这可能吗? 如果是,怎么样?

1 个答案:

答案 0 :(得分:1)

您可能希望 子类Zend_Form_Element_Submit 并使用loadDefaultDecorators()为您的提交设置默认装饰器:

class My_Form_Element_Submit extends Zend_Form_Element_Submit
{
    public function loadDefaultDecorators()
    {
        // set your default decorators for the submit element       
        $decorators = $this->getDecorators();
        if (empty($decorators)) {
            $this->setDecorators(array(
                'ViewHelper',
                array(
                    array('field' => 'HtmlTag'),
                    array(
                        'tag'   => 'span',
                        'class' => 'some-wrapper-class'
                    ) 
                )
            ));
        }
    }
}

以上装饰器会导致 HTML代码看起来像这样 ,让您轻松设置提交按钮的样式:

<span class="some-wrapper-class"> 
    <input type="submit" name="save" id="save" value="Save">
</span>