2015-11-07 150 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

是的,你也可以這樣做。 –