Yii передает параметры виджету

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

мы создаем виджет в Yii следующим образом:

class streamList extends CWidget {
  //do some stuff
}

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

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

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

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

Я гуглил, но не решил. Помогите, заранее спасибо.

Журнал редактирования: Кроме того, как мы можем определить значение параметра по умолчанию как «название»? Я пробовал public $title = Shk::getTitle(), но это не сработало.


person Shahid Karimi    schedule 15.02.2013    source источник


Ответы (1)


Использовать

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

Любые атрибуты могут быть инициализированы значениями по умолчанию и перезаписаны

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

ИЗМЕНИТЬ

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

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

PS для согласованности лучше использовать заглавные буквы в именах классов.

person topher    schedule 15.02.2013
comment
Файл Shk загружается автоматически? - person topher; 16.02.2013
comment
Ошибка не в классе, а в инициализации. Я отредактировал ответ из-за этого. - person topher; 16.02.2013