WIDGET定义很简单,如果你在/protected/widget/test/下建立了一个名为“testWidget.php”的widget。
在视图中调用需要这样写:
...可能小部件需要用到这里主体内容...
testWidget.php文件的定义方式:
class testWidget extends CWidget
{
public function init()
{
//当视图中执行$this->beginWidget()时候会执行这个方法
//可以在这里进行查询数据操作
}
public function run()
{
//当视图中执行$this->endWidget()的时候会执行这个方法
//可以在这里进行渲染试图的操作,注意这里提到的视图是widget的视图
//注意widget的视图是放在跟widget同级的views目录下面,例如下面的视图会放置在
// /protected/widget/test/views/test.php
$this->render('test', array(
'str'=>'WIDGET视图变量',
));
}
}
例如 添加面包屑导航
class BreadCrumb extends CWidget {
//public $controllers = array();
public $crumbs = array();
public $delimiter = ' > ';
public function init(){
// 此方法会被 CController::beginWidget() 调用
//$this->crumbs = array();
}
public function run() {
// 此方法会被 CController::endWidget() 调用
$this->render('BreadCrumb');
}
}
//protected/components/views/BreadCrumb.php
foreach($this->crumbs as $crumb) {
if(isset($crumb['url'])) {
echo CHtml::link($crumb['name'], $crumb['url']);
} else {
echo $crumb['name'];
}
if(next($this->crumbs)) {
echo $this->delimiter;
}
}