2013-02-15 54 views
4

對不起,如果我使用了錯誤的關鍵字。可能是由於錯誤的關鍵字,我沒有得到足夠的信息。Yii將參數傳遞給控件

我們的Yii通過這種方式控件創建:

class streamList extends CWidget { 
    //do some stuff 
} 

此外,我們使用這個插件的任何地方,

$this->widget("application.components.widget.streamList"); 

我們怎樣才能寫出小部件以這樣一種方式,它接受的參數( s)as

$this->widget("application.components.widget.streamList",array('title'=>'Posts'); 

我使用Google搜索,但沒有解決。請提前幫助,謝謝。

編輯日誌: 另外,我們如何定義默認參數值爲'titile'?我試過public $title = Shk::getTitle(),但沒有奏效。

回答

11

使用

class StreamList extends CWidget { 
    //do some stuff 
    public $title; 
} 

任何屬性都可以使用默認值進行初始化,並覆蓋由

$this->widget("application.components.widget.StreamList",array('title'=>'Posts',.....) 

編輯

您不能初始化類的功能屬性。給出的解釋是here。一種選擇是檢查$title是否設置,如果不將其設置爲Shk::getTitle()init()方法類似

public function init(){ 
    .... 
    if(!isset($this->title) || !$this->title) 
     $this->title=Shk::getTitle(); 
    .... 
} 

P.S的一致性,最好能夠利用你的類名。

+0

謝謝,但問題是位編輯。看看先生 – 2013-02-15 20:37:07

+0

文件'Shk'自動加載? – topher 2013-02-15 20:39:06

+0

是的,它被加載並在應用程序中的任何地方使用 – 2013-02-15 20:42:10