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 修改zen-cart下单和付款流程以防止漏单
Mar 08 PHP
PHP统计目录下的文件总数及代码行数(去除注释及空行)
Jan 17 PHP
PHP求小于1000的所有水仙花数的代码
Jan 10 PHP
php中文繁体和简体相互转换的方法
Mar 21 PHP
PHP设计模式之装饰者模式代码实例
May 11 PHP
PHP CURL或file_get_contents获取网页标题的代码及两者效率的稳定性问题
Nov 30 PHP
php下载远程大文件(获取远程文件大小)的实例
Jun 17 PHP
php+redis消息队列实现抢购功能
Feb 08 PHP
PHP实现数组向任意位置插入,删除,替换数据操作示例
Apr 05 PHP
Laravel5.5 视图 - 创建视图和数据传递示例
Oct 21 PHP
PHP基于array_unique实现二维数组去重
Jul 14 PHP
PHP替换Word中变量并导出PDF图片的实现方法
Nov 26 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&amp;&amp;mysql)一
2006/10/09 PHP
PHP 采集获取指定网址的内容
2010/01/05 PHP
php字符串过滤与替换小结
2015/01/26 PHP
微信随机生成红包金额算法php版
2016/07/21 PHP
ThinkPHP中session函数详解
2016/09/14 PHP
Laravel 5.4重新登录实现跳转到登录前页面的原理和方法
2017/07/13 PHP
Yii2语言国际化自动配置详解
2018/08/22 PHP
解决php extension 加载顺序问题
2019/08/16 PHP
Laravel 微信小程序后端实现用户登录的示例代码
2019/11/26 PHP
php数组指针函数功能及用法示例
2020/02/11 PHP
ext checkboxgroup 回填数据解决
2009/08/21 Javascript
Jquery Ajax请求代码(2)
2011/01/07 Javascript
判断js对象是否拥有某一个属性的js代码
2013/08/16 Javascript
js实现简单的星级选择器提交效果适用于评论等
2013/10/18 Javascript
如何判断元素是否为HTMLElement元素
2013/12/06 Javascript
javascript基于HTML5 canvas制作画箭头组件
2014/06/25 Javascript
JavaScript操作select元素和option的实例代码
2016/01/29 Javascript
详解AngularJS控制器的使用
2016/03/09 Javascript
jQuery EasyUI框架中的Datagrid数据表格组件结构详解
2016/06/09 Javascript
JS获取url参数、主域名的方法实例分析
2016/08/03 Javascript
Javascript中将变量转换为字符串的三种方法
2017/09/19 Javascript
解决vue热替换失效的根本原因
2018/09/19 Javascript
微信小程序使用scroll-view标签实现自动滑动到底部功能的实例代码
2018/11/09 Javascript
Typescript 中的 interface 和 type 到底有什么区别详解
2019/06/18 Javascript
基于vue、react实现倒计时效果
2019/08/26 Javascript
jQuery实现全选按钮
2021/01/01 jQuery
Python中删除文件的程序代码
2011/03/13 Python
Python中使用logging模块代替print(logging简明指南)
2014/07/09 Python
Python字符串格式化%s%d%f详解
2018/02/02 Python
python 计算两个列表的相关系数的实现
2019/08/29 Python
python返回数组的索引实例
2019/11/28 Python
python实现TCP文件传输
2020/03/20 Python
数控技术与应用毕业生自荐信
2013/09/24 职场文书
夜不归宿检讨书
2014/02/25 职场文书
推荐信范文大全
2015/03/27 职场文书
刑事起诉书范文
2015/05/19 职场文书