YII中assets的使用示例


Posted in PHP onJuly 31, 2014

一、YII assets的作用:

1.yii中assets的作用是方便模块化,插件化的,一般来说出于安全原因不允许通过url访问protected下面的文件 ,但是我们又希望将module单独出来,所以需要使用发布,即将一个目录下的文件复制一份到assets下面方便通过url访问

$assets = Yii::getPathOfAlias('ext').'/css';
//$baseUrl = Yii::app()->getAssetManager()->publish($assets);
$baseUrl = Yii::app()->assetManager->publish($assets); //extensions/css发布到assets的创建一个随机不冲突的文件夹下
Yii::app()->clientScript->registerCssFile($baseUrl.'/main.css');//引用assets下面的main.css

2.如果一个模块需要添加使用资源,直接从webroot中引用添加即可。
但是试图创建一个模块能够在任何地方引用,且资源独立并能够避免命名冲突
你如何保证你的文件名不会与一些零散的应用程序的尝试使用相同名称的文件冲突,对于js,images,css也一样。
通过CAssetManager,Yii::app()->assetManager能够自动的将私有资源publish到公共目录下webroot/assets
 
二、使用示例:

下面以admin module为例说明assets的用法:

1、把需要用到的资源放在modules/admin/assets下。

2、通过 CAssetManager,Yii::app()->assetManager能够自动的将私有资源publish到公共目录下 网站目录/assets

3、Yii会自动在网站目录的/assets下创建一个随机不冲突的文件夹,如2b31b42b,并把你的modules/admin/assets目录下的文件拷贝过去。
通过如下代码获得,修改protected\modules\admin\AdminModule.php文件,

<?php
class AdminModule extends CWebModule
{
 private $_assetsUrl;

 public function getAssetsUrl()
 {
 if($this->_assetsUrl===null)
  $this->_assetsUrl=Yii::app()->getAssetManager()->publish(Yii::getPathOfAlias('application.modules.admin.assets'));
 return $this->_assetsUrl;
 }

 public function setAssetsUrl($value)
 {
 $this->_assetsUrl=$value;
 }
}

然后,在/protected/modules/admin/views/layouts/main.php中使用$this->module->assetsUrl就可以调用你的css等文件了,代码如下所示:

<link rel="stylesheet" type="text/css" href="<?php echo $this->module->assetsUrl; ?>/css/screen.css" rel="external nofollow" />

使用前还需要强制更新asset,代码如下:

$baseJsUrl = Yii::app()->getAssetManager()->publish($baseJsPath, false, -1, YII_DEBUG);
PHP 相关文章推荐
PHP中的正则表达式函数介绍
Feb 27 PHP
php在项目中寻找代码的坏味道(综艺命名)
Jul 19 PHP
常见php数据文件缓存类汇总
Dec 05 PHP
PHP查找数值数组中不重复最大和最小的10个数的方法
Apr 20 PHP
PHP中addcslashes与stripcslashes函数用法分析
Jan 07 PHP
php注册登录系统简化版
Dec 28 PHP
PHP浮点数的一个常见问题
Mar 10 PHP
利用PHPExcel读取Excel的数据和导出数据到Excel
May 12 PHP
PHP实现时间比较和时间差计算的方法示例
Jul 24 PHP
解决form中action属性后面?传递参数 获取不到的问题
Jul 21 PHP
基于php双引号中访问数组元素报错的解决方法
Feb 01 PHP
redis+php实现微博(一)注册与登录功能详解
Sep 23 PHP
基于PHP的简单采集数据入库程序【续篇】
Jul 30 #PHP
基于PHP的简单采集数据入库程序
Jul 30 #PHP
PHP中设置一个严格30分钟过期Session面试题的4种答案
Jul 30 #PHP
PHP使用Session遇到的一个Permission denied Notice解决办法
Jul 30 #PHP
PHP伪静态Rewrite设置之APACHE篇
Jul 30 #PHP
PHP return语句的另一个作用
Jul 30 #PHP
php mb_substr()函数截取中文字符串应用示例
Jul 29 #PHP
You might like
用PHP将网址字符串转换成超链接(网址或email)
2010/05/25 PHP
PHP大批量数据操作时临时调整内存与执行时间的方法
2011/04/20 PHP
PHP中source #N问题的解决方法
2014/01/27 PHP
图文详解PHP环境搭建教程
2016/07/16 PHP
PHP实现微信提现功能
2018/09/30 PHP
一次因composer错误使用引发的问题与解决
2019/03/06 PHP
javascript showModalDialog模态对话框使用说明
2009/12/31 Javascript
JQuery AJAX 中文乱码问题解决
2013/06/05 Javascript
jquery实现div拖拽宽度示例代码
2013/07/31 Javascript
JS关闭窗口或JS关闭页面的几种代码分享
2013/10/25 Javascript
12306验证码破解思路分享
2015/03/25 Javascript
JavaScript操作XML文件之XML读取方法
2015/06/09 Javascript
javascript弹出带文字信息的提示框效果
2016/07/19 Javascript
深入理解AngularJS中的ng-bind-html指令和$sce服务
2016/09/08 Javascript
Bootstrap 响应式实用工具实例详解
2017/03/29 Javascript
JS实现的简单标签点击切换功能示例
2017/09/21 Javascript
深入浅析vue组件间事件传递
2017/12/29 Javascript
Vue2.x Todo之自定义指令实现自动聚焦的方法
2019/01/08 Javascript
maptalks+three.js+vue webpack实现二维地图上贴三维模型操作
2020/08/10 Javascript
如何阻止移动端浏览器点击图片浏览
2020/08/29 Javascript
vue 根据选择的月份动态展示日期对应的星期几
2021/02/06 Vue.js
[43:57]Liquid vs Mineski 2019国际邀请赛小组赛 BO2 第二场 8.16
2019/08/19 DOTA
python之wxPython应用实例
2014/09/28 Python
python实现连连看辅助之图像识别延伸
2019/07/17 Python
python安装gdal的两种方法
2019/10/29 Python
Python实现CNN的多通道输入实例
2020/01/17 Python
详解css3中dispaly的Grid布局与Flex布局
2020/09/11 HTML / CSS
canvas使用注意点总结
2013/07/19 HTML / CSS
EJB的角色和三个对象
2015/12/31 面试题
行政部总经理岗位职责
2014/01/04 职场文书
工程招投标邀请书
2014/01/30 职场文书
三爱活动实施方案
2014/03/19 职场文书
2015年收银工作总结范文
2015/04/01 职场文书
2015年幼儿园德育工作总结
2015/05/25 职场文书
作文之亲情600字
2019/09/23 职场文书
python index() 与 rindex() 方法的使用示例详解
2022/12/24 Python