装饰器 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'));
如果您想了解更多信息,请查看:
我有一个标签,我想更改它的颜色: 所以我这样做: 我在 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'));
如果您想了解更多信息,请查看: