yii widget 请确认它指向一个存在的php文件,Yii2 Day 6: 创建Widget

Yii1的项目中,积累了大量小部件,为了在Yii2中使用,需要做一些必要的修改。

Assets管理

在Yii1的时候,Assets的管理是通过文件方式,通常的做法是在Wiget文件夹中建立一个assets的文件夹,把js,css, 图像,字体等放到这个文件夹下,然后通过下面的代码发布到web目录下:

$assets = dirname(__FILE__) . '/assets';

$baseUrl = Yii::app()->assetManager->publish($assets);

Yii::app()->clientScript->registerScriptFile($baseUrl . '/simple.js', CClientScript::POS_END);

Yii::app()->clientScript->registerCssFile($baseUrl . '/simple.css');

到了Yii2后,发现没有clientScript组件了,取而代之的是Assetbundle,即资源包的概念。要实现上面几行同样的功能,需要建立资源包类,然后类定义如下:

public $sourcePath = '@app/modules/attach/widgets/singleUploader/assets';

public $js = [

'simple.js',

];

public $css = [

'simple.css',

];

public $depends = [

'yii\web\JqueryAsset',

];

资源包依赖

把js文件,css文件,以数组的方式赋值给这个Bundle类。简而言之,就是以OO的方式解决资源包的管理问题。$depends成员变量特别值得注意,它定义了这个资源包的依赖关系。比如上面这个定义,依赖于Jquery库,直接引入一个JqueryAsset资源包依赖就可以了,这样就避免了在多个Widget里存放多份Jquery文件的尴尬。

注册资源包

定义资源包后,在小部件的run方法里调用注册,如下:

$view = $this->getView();

UploaderAsset::register($view);

这样就完成了资源文件的拷贝过程,比1.x相比,管理上更方便了。

调用小部件

调用过程和1.x一样,只是现在流行用静态调用,方便IDE代码自动提示,效率进一步得到提升:

use app\modules\attach\widgets\singleUploader\SingleUploadWidget;

echo SingleUploadWidget::widget(['ctrlName'=>'user_file']);

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值