2015-11-07 112 views
1

我有一个标签,我想改变它的颜色: 所以我这样做: 我有我的表单类中的Zend:装饰Zend框架PHP

$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框架。 我不太好,我做错了什么?

回答

1

我想你忘了concate $内容是这样的:如果你想了解更多看看这个

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

Layering Decorators

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; 
     } 
    } 
} 

现在试试这个

+0

问题出在这里: 保护$ html ='

%s
'; 并解决: 保护$ html ='
%s
%s'; –

+0

是的,你也可以这样做。 –