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写入WRITE编码为UTF8的文件的实现代码
Jul 07 PHP
把1316这个数表示成两个数的和,其中一个为13的倍数,另一个是11的倍数,求这两个数。
Jun 24 PHP
深入PHP5中的魔术方法详解
Jun 17 PHP
ThinkPHP之A方法实例讲解
Jun 20 PHP
PHP生成图片验证码、点击切换实例
Jun 25 PHP
php对数组内元素进行随机调换的方法
May 12 PHP
php使用ob_flush不能每隔一秒输出原理分析
Jun 02 PHP
thinkPHP下的widget扩展用法实例分析
Dec 26 PHP
Zend Framework动作助手Redirector用法实例详解
Mar 05 PHP
Laravel框架学习笔记之批量更新数据功能
May 30 PHP
php操作redis常见方法示例【key与value操作】
Apr 14 PHP
PHP 8新特性简介
Aug 18 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
关于js与php互相传值的介绍
2013/06/25 PHP
php使用自定义函数实现汉字分割替换功能示例
2017/01/30 PHP
Laravel5.1 框架响应基本用法实例分析
2020/01/04 PHP
php5.3/5.4/5.5/5.6/7常见新增特性汇总整理
2020/02/27 PHP
使用jquery动态加载javascript以减少服务器压力
2012/10/29 Javascript
JS仿百度搜索自动提示框匹配查询功能
2013/11/21 Javascript
js获取视频时长代码
2014/04/10 Javascript
node.js中使用node-schedule实现定时任务实例
2014/06/03 Javascript
jQuery调用ajax请求的常见方法汇总
2015/03/24 Javascript
jQuery+HTML5实现图片上传前预览效果
2015/08/20 Javascript
jQuery实现可关闭固定于底(顶)部的工具条菜单效果
2015/11/06 Javascript
WebGL利用FBO完成立方体贴图效果完整实例(附demo源码下载)
2016/01/26 Javascript
详解javascript表单的Ajax提交插件的使用
2016/12/29 Javascript
基于jQuery插件jqzoom实现的图片放大镜效果示例
2017/01/23 Javascript
Vue+axios实现统一接口管理的方法
2018/07/23 Javascript
Js通过AES加密后PHP用Openssl解密的方法
2019/07/12 Javascript
小程序Request的另类用法详解
2019/08/09 Javascript
使用Vue实现简单计算器
2020/02/25 Javascript
vue + el-form 实现的多层循环表单验证
2020/11/25 Vue.js
pandas进行数据的交集与并集方式的数据合并方法
2018/06/27 Python
python for 循环获取index索引的方法
2019/02/01 Python
Django框架视图函数设计示例
2019/07/29 Python
使用python去除图片白色像素的实例
2019/12/12 Python
使用Python测试Ping主机IP和某端口是否开放的实例
2019/12/17 Python
Python基于numpy模块实现回归预测
2020/05/14 Python
python 如何引入协程和原理分析
2020/11/30 Python
python复合条件下的字典排序
2020/12/18 Python
西班牙英格列斯百货法国官网:El Corte Inglés法国
2017/07/09 全球购物
MediaMarkt比利时:欧洲最大电器连锁店
2020/12/21 全球购物
家长给孩子的表扬信
2014/01/17 职场文书
个人简历自我评价范文
2014/02/04 职场文书
护理专业毕业生自荐书
2014/05/24 职场文书
毕业设计工作总结
2015/08/14 职场文书
教师正风肃纪心得体会
2016/01/15 职场文书
Pyhton模块和包相关知识总结
2021/05/12 Python
bose降噪耳机音能消除人声吗
2022/04/19 数码科技