码迷,mamicode.com
首页 > 其他好文 > 详细

Yii2 Day 6: 创建Widget

时间:2014-12-18 12:08:40      阅读:180      评论:0      收藏:0      [点我收藏+]

标签:os   使用   sp   文件   问题   代码   ad   as   tt   

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‘]);

Yii2 Day 6: 创建Widget

标签:os   使用   sp   文件   问题   代码   ad   as   tt   

原文地址:http://my.oschina.net/u/248080/blog/357489

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!