Yii传递参数给小部件

4
抱歉,如果我使用了错误的关键字。可能是因为关键字不正确,我没有获得足够的信息。
我们用以下方式在Yii中创建小部件:
class streamList extends CWidget {
  //do some stuff
}

此外,我们可以在任何地方使用此小部件。
$this->widget("application.components.widget.streamList");

我们如何编写小部件,以便它可以接受参数?
$this->widget("application.components.widget.streamList",array('title'=>'Posts');

我谷歌搜索了但没有解决。请帮忙,先行致谢。
编辑日志: 另外,我们如何将默认参数值定义为'title'?我尝试过public $title = Shk::getTitle(),但它不起作用。
1个回答

12

使用

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

任何属性都可以用默认值进行初始化,并且可以被覆盖。

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

编辑

你不能使用函数来初始化类属性。这里给出了一个解释一个选项是在init()方法中检查$title是否已设置,如果没有,则将其设置为Shk::getTitle()

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

为了保持一致性,最好将您的类名大写。


文件 Shk 是否自动加载? - topher
错误不在类上,而在初始化上。我已经因此编辑了答案。 - topher

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接