2013-02-15 3 views
4

Извините, если я использую неправильное ключевое слово. Возможно, я не получил достаточную информацию из-за неправильного ключевого слова.Yii Передача параметров виджету

мы создаем виджет в Yii таким путем:

class streamList extends CWidget { 
    //do some stuff 
} 

Кроме того, мы используем этот виджет в любом месте, как

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

Как мы можем написать виджет таким образом, что он принимает параметр (с) как

$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',.....) 

EDIT

Вы не можете инициализировать атрибуты класса с функциями. Дается пояснение here. Вариант проверить $title установлен ли и, если не установить его Shk::getTitle() в методе init() как

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

P.S для последовательности это лучше капитализировать свои имена классов.

+0

спасибо, но вопрос немного отредактирован. Посмотрите sir –

+0

Является ли файл 'Shk' ​​самозагруженным? – topher

+0

Да, он загружен и используется везде в приложении –

Смежные вопросы