装饰器 Zend 框架 PHP

Decorators Zend Framework PHP

我有一个标签,我想更改它的颜色: 所以我这样做: 我在 zend 中有我的表格 class:

$this->addElement('text','name',array('label' => 'Name Event'));
$this->getElement("name")
        ->addDecorator("EditLabel");

这是我的装饰器:

class OrarLib_Form_Decorator_EditLabel extends Zend_Form_Decorator_Abstract
{

protected $html = '<div class = "label"> %s </div>';
public function init()
{
    parent::init();
}

public function render($content)
{
    $label = $this->getElement()->getLabel();
    return sprintf($this->html, $label, $content);
}
}

问题是当我使用这个装饰器时我的文本框消失了。 我正在使用 Zend 框架。 我不太好,我做错了什么?

我想你忘了像这样连接 $content:

class OrarLib_Form_Decorator_EditLabel extends Zend_Form_Decorator_Abstract
{

    protected $html = '<div class = "label"> %s </div>';
    public function init()
    {
        parent::init();
    }

    public function render($content)
    {
        $label = $this->getElement()->getLabel();
        $markup = sprintf($this->html, $label);

        $placement = $this->getPlacement();
        $separator = $this->getSeparator();

        switch ($placement) {
            case self::PREPEND:
                return $markup . $separator . $content;
            case self::APPEND:
            default:
                return $content . $separator . $markup;
        }
    }
}

现在试试这个:

$this->getElement("name")->addDecorator(array('EditLabel', array('placement' => 'append'));

如果您想了解更多信息,请查看:

Layering Decorators