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执行linux系统命令的常用函数使用说明
Apr 27 PHP
第四章 php数学运算
Dec 30 PHP
php的memcache类分享(memcache队列)
Mar 26 PHP
php中json_encode处理gbk与gb2312中文乱码问题的解决方法
Jul 10 PHP
YII中assets的使用示例
Jul 31 PHP
php设计模式之单例模式实例分析
Feb 25 PHP
php中使用key,value,current,next和prev函数遍历数组的方法
Mar 17 PHP
PHP新建类问题分析及解决思路
Nov 19 PHP
搭建Vim为自定义的PHP开发工具的一些技巧
Dec 11 PHP
php 访问oracle 存储过程实例详解
Jan 08 PHP
PHP中ajax无刷新上传图片与图片下载功能
Feb 21 PHP
PHP微商城开源代码实例
Mar 27 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
浅谈Windows下 PHP4.0与oracle 8的连接设置
2006/10/09 PHP
Apache环境下PHP利用HTTP缓存协议原理解析及应用分析
2010/02/16 PHP
php判断正常访问和外部访问的示例
2014/02/10 PHP
PHP中通过trigger_error触发PHP错误示例
2015/06/23 PHP
使用PHP uniqid函数生成唯一ID
2015/11/18 PHP
thinkPHP下ueditor的使用方法详解
2015/12/26 PHP
phpinfo()中Loaded Configuration File(none)的解决方法
2017/01/16 PHP
PHP SPL 被遗落的宝石【SPL应用浅析】
2018/04/20 PHP
PHP观察者模式示例【Laravel框架中有用到】
2018/06/15 PHP
用nodejs访问ActiveX对象,以操作Access数据库为例。
2011/12/15 NodeJs
open 动态修改img的onclick事件示例代码
2013/11/13 Javascript
JQuery创建DOM节点的方法
2015/06/11 Javascript
jQuery实现平滑滚动的标签分栏切换效果
2015/08/28 Javascript
jquery点击缩略图切换视频播放特效代码分享
2015/09/15 Javascript
jQuery实现的跨容器无缝拖动效果代码
2016/06/21 Javascript
JavaScript表单验证完美代码
2017/03/02 Javascript
详解Vue2.0之去掉组件click事件的native修饰
2017/04/20 Javascript
在 Linux/Unix 中不重启 Vim 而重新加载 .vimrc 文件的流程
2018/03/21 Javascript
jQuery实现条件搜索查询、实时取值及升降序排序的方法分析
2019/05/04 jQuery
浅谈layer弹出层按钮颜色修改方法
2019/09/11 Javascript
ES6如何用一句代码实现函数的柯里化
2020/01/18 Javascript
vue中如何自定义右键菜单详解
2020/12/08 Vue.js
解决python文件字符串转列表时遇到空行的问题
2017/07/09 Python
django项目运行因中文而乱码报错的几种情况解决
2017/11/07 Python
机器学习10大经典算法详解
2017/12/07 Python
python如何读取bin文件并下发串口
2019/07/05 Python
Python 过滤错误log并导出的实例
2019/12/26 Python
keras slice layer 层实现方式
2020/06/11 Python
Django 实现图片上传和下载功能
2020/12/31 Python
Priority Pass机场贵宾室会籍计划:全球超过1200间机场贵宾室
2018/08/26 全球购物
.NET里面如何取得当前的屏幕分辨率
2012/12/06 面试题
心碎乌托邦的创业计划书范文
2013/12/26 职场文书
集团公司党的群众路线教育实践活动工作总结
2014/03/03 职场文书
技术经济专业求职信
2014/09/03 职场文书
道歉信范文
2015/05/12 职场文书
总经理2015中秋节致辞
2015/07/29 职场文书