
有的人会挑选制造多个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合理吗的细致内容,更多请关注ki4网别的相干文章!