widget问题 [ 未指定版本 ]
有一个$this->widget();这么个东西不太懂它里边的参数是啥意思
共 1 个回答
-
首先你得知道widget是干什么的,小挂件可以由自己的view,我们可以自由的定义,
例如:在如下地方建/home/tann/website/dev_yii/shop/protected/widget/test,
我们可以把网站的一些经常用到的重复性的东西提取出来,做成widget,提高复用性。
然后建文件/home/tann/website/dev_yii/shop/protected/widget/test/testWidget.php
<?php
/**- Created by PhpStorm.
- User: tann
- Date: 14-8-13
- Time: 上午10:45
*/
/**
- test widget
- widget类的使用类似Controller,也可以有自己的view
*/
class registerWidget extends CWidget
{
public function init(){//当视图中执行$this->beginWidget()时候会执行这个方法 //可以在这里进行查询数据操作 echo '<br>testWidget.init()'.'<br>';
}
public function run(){//当视图中执行$this->endWidget()的时候会执行这个方法 //可以在这里进行渲染试图的操作,注意这里提到的视图是widget的视图 //注意widget的视图是放在跟widget同级的views目录下面,例如下面的视图会放置在 // /protected/widget/test/views/test.php echo 'testWidget.run()'.'<br>'; $this->render('test', array( 'str'=>'WIDGET视图变量', ));
}
}
然后,在视图位置建文件
/home/tann/website/dev_yii/shop/protected/widget/test/views/test.php
widget/test/views/test.php
<?php
echo $str;
?>这样我们就定义好了一个widget
在控制器的视图层做如下调用:
<?php
$this->widget('application.widget.test.testWidget'); //挂件类的路径
/
$this->beginWidget('application.widget.test.testWidget');
$this->endWidget('application.widget.test.testWidget');
/
?>这样我们看到的效果
testWidget.int()
testWidget.run()
widget/test/views/test.php WIDGET视图变量共 1 条回复风 觉得很赞
jia253 北京-昌平
注册时间:2014-08-18
最后登录:2023-10-24
在线时长:288小时54分
最后登录:2023-10-24
在线时长:288小时54分
- 粉丝34
- 金钱4448
- 威望20
- 积分7528