您好,欢迎访问一九零五行业门户网

yii将数据操作放在widget合理吗

有的人会选择制作多个layout,在不同地方切换layout,但这样代码的重用性没有发挥出来,而且不够灵活。yii里面有一个很方便的机制来解决这一问题,那就是 —— widget,小部件是也。                      (推荐学习:yii框架)
yii里面有一些自带的widget,他们放在web.widgets和zii.widgets下面,比如有我们常用的clinkpager、cmenu大家可以看一看。
要自己扩展widget,根据手册上的介绍,需要继承cwidget,并且覆盖run()方法。我们来开始扩展第一个widget:
创建widget存放目录: 在application(默认是protected)下创建目录widgets,用来存放widget类,然后创建widgets.views目录,用来存放widget的视图文件。
创建widget类: 在application.widgets下面创建一个名为testwidget.php的文件,命名没太大讲究,保证唯一性,见名知意即可。在里面加入以下代码:
class testwidget extends cwidget{ public $datetime = ''; public function run() { $datetime = empty($this->datetime) ? date('y-m-d h:i:s') : $this->datetime; $this->render('test', array('datetime'=>$datetime)); }}
解释一下这段代码:按照规则,类名testwidget与文件名testwidget.php相同,类testwidget需要继承cwidget,然后重写(rewrite)run()方法,该方法会在widget被渲染是调用。
在run()方法里调用$this->render()方法渲染test视图,将变量$datetime传递到视图(参见控制器的视图渲染)。可以在里面查询数据库,进行各种操作,将运算的结果传入视图。
以上就是yii将数据操作放在widget合理吗的详细内容。
其它类似信息

推荐信息