PHP学习#Yii扩展的创建

 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 

  1.  第一种方法:当我们在views中是使用$this-> beginWidget插入一个widget时被调用
  2. 第二种方法: 在$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渲染推送

Action (动作): 应继承CAction或者是其子类  。主要实现的方法是IAction::run;

Filter(过滤器): 应继承Cfilter或是其子类。主要方法是CFilter::preFilter和CFilter::postFilter ,不同就在前者是action 之前被执行的而后者是在之后

Controller(控制器) :要继承CExtController而不是CController 。主要原因是方便重新分配控制器因为他的视图文件合控制类是在一起的

Validator(验证): 应继承CValidator和实现他的validateAtrribute方法

Console Command(控制台命令): 应继承CConsoleCommand和实现CConsoleComand::run方法,还可以重载他的getHelp方法

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值