CreatIing Extensions (创建扩展)
应用部件 :
application component 应实现接口IApplicationComponent或是extends CapplicationCompontent 主要是实现方法IApplicationComponent::init ,部件在此执行一些初始化的工作,方法在部件创建和属性值被赋值调用
widget(控件):
wideget应继承Cwidget或其子类 ,最简单的方法:
class MyTableView extends CTabView
{
public function init()
{
if ($this->cssFile===null)
{
$file=dirname(_FILE_).DIRECTORY_SEPARATOR.'tabview.css'
$this->cssFile=Yii::app()->getAssetManager()->publish($file);
}
parent::init();
}
}
在上面代码中我们重载了CWideget::init方法和CtabView::cssFile的URL到我们新的CSS;
创建一个小工具: 主要实现两个方法: CWidget::init 和CWideget::run
-
第一种方法:当我们在views中是使用$this-> beginWidget插入一个widget时被调用
-
第二种方法: 在$this->endWidget被调用时调用。如果我们想在两个方法调用之间捕捉和处理现实内容 我们可以在回收缓冲中进一步处理;
如果在网页中使用小工具 ,其中往往会包含CSS ,JS 或者其他文, 我们叫这些文件assets ,通常他是无法访问的 ,我饿们需要CWebApplication::assetManager发布,此外我们想包含CSS或JavaScript文件在当前网页,我们就需要去CClientScript注册:
class MyWidget extends CWidget { protected function registeClientScript() { $cs=Yii::app()->clientScript; $cs->registerCssFile($cssFile); $cd->registerScriptFile($jsFile); } }
如果创建widget视图 那就创建一个目录名views在包括小工具类的目录下,并把所有的视图文件放里面,并且用render渲染推送