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 相关文章推荐
ajax缓存问题解决途径
Dec 06 PHP
IIS6的PHP最佳配置方法
Mar 19 PHP
使用 eAccelerator加速PHP代码的方法
Sep 30 PHP
PHP编程中字符串处理的5个技巧小结
Nov 13 PHP
PHP 最大运行时间 max_execution_time修改方法
Mar 08 PHP
用PHP实现小写金额转换大写金额的代码(精确到分)
Jan 10 PHP
php 验证码(倾斜,正弦干扰线,黏贴,旋转)
Jun 29 PHP
分享PHP函数实现数字与文字分页代码
Jul 28 PHP
PHP和MySql中32位和64位的整形范围是多少
Feb 18 PHP
php指定长度分割字符串str_split函数用法示例
Jan 30 PHP
详解php实现页面静态化原理
Jun 21 PHP
Laravel 解决composer相关操作提示php相关异常的问题
Oct 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
使用 eAccelerator加速PHP代码的目的
2007/03/16 PHP
PHP simple_html_dom.php+正则 采集文章代码
2009/12/24 PHP
详解YII关联查询
2016/01/10 PHP
PHP 数组基本操作方法详解
2016/06/17 PHP
prettify 代码高亮着色器google出品
2010/12/28 Javascript
jQuery源码分析-03构造jQuery对象-工具函数
2011/11/14 Javascript
js判断字符是否是汉字的两种方法小结
2014/01/03 Javascript
jquery选择器需要注意的问题
2014/11/26 Javascript
javascript跨域方法、原理以及出现问题解决方法(详解)
2015/08/06 Javascript
JS实现的鼠标跟随代码(卡通手型点击效果)
2015/10/26 Javascript
判断输入的字符串是否是日期格式的简单方法
2016/07/11 Javascript
详解js运算符单竖杠“|”与“||”的用法和作用介绍
2016/11/04 Javascript
微信小程序 input输入框控件详解及实例(多种示例)
2016/12/14 Javascript
原生js实现网页顶部自动下拉/收缩广告效果
2017/01/20 Javascript
Javascript 链式作用域详细介绍
2017/02/23 Javascript
Bootstrap实现翻页效果
2017/11/27 Javascript
trackingjs+websocket+百度人脸识别API实现人脸签到
2018/11/26 Javascript
React 使用recharts实现散点地图的示例代码
2018/12/07 Javascript
浅析vue-cli3配置webpack-bundle-analyzer插件【推荐】
2019/10/23 Javascript
node.js中Buffer缓冲器的原理与使用方法分析
2019/11/23 Javascript
微信小程序实现二维码签到考勤系统
2020/01/16 Javascript
javascript实现滚动条效果
2020/03/24 Javascript
讲解Python中fileno()方法的使用
2015/05/24 Python
在Django中创建第一个静态视图
2015/07/15 Python
日常整理python执行系统命令的常见方法(全)
2015/10/22 Python
Python时间获取及转换知识汇总
2017/01/11 Python
python命令行解析之parse_known_args()函数和parse_args()使用区别介绍
2018/01/24 Python
python入门教程 python入门神图一张
2018/03/05 Python
python3+selenium实现qq邮箱登陆并发送邮件功能
2019/01/23 Python
Python 的 __str__ 和 __repr__ 方法对比
2020/09/02 Python
为2021年的第一场雪锦上添花:用matplotlib绘制雪花和雪景
2021/01/05 Python
Python Process创建进程的2种方法详解
2021/01/25 Python
公司任命书范本
2014/06/04 职场文书
老公保证书
2015/01/17 职场文书
2019年新郎保证书3篇
2019/10/17 职场文书
JAVA长虹键法之建造者Builder模式实现
2022/04/10 Java/Android