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的分页功能
Mar 21 PHP
PHP中return 和 exit 、break和contiue 区别与用法
Apr 09 PHP
php中用socket模拟http中post或者get提交数据的示例代码
Aug 08 PHP
php实现插入排序
Mar 29 PHP
php集成动态口令认证
Jul 21 PHP
PHP实现登陆表单提交CSRF及验证码
Jan 24 PHP
PHP中的函数声明与使用详解
May 27 PHP
PHP实现的简单适配器模式示例
Jun 22 PHP
PHP基于socket实现的简单客户端和服务端通讯功能示例
Jul 10 PHP
浅析PHP数据导出知识点
Feb 17 PHP
ThinkPHP5.1框架数据库链接和增删改查操作示例
Aug 03 PHP
PHP数组基本用法与知识点总结
Jun 02 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
新版mysql+apache+php Linux安装指南
2006/10/09 PHP
php操作redis缓存方法分享
2015/06/03 PHP
搜索附近的人PHP实现代码
2018/02/11 PHP
PHP实现数组根据某个字段进行水平合并,横向合并案例分析
2019/10/08 PHP
翻译整理的jQuery使用查询手册
2007/03/07 Javascript
发布BlueShow v1.0 图片浏览器(类似lightbox)blueshow.js 打包下载
2007/07/21 Javascript
最佳6款用于移动网站开发的jQuery 图片滑块插件小结
2012/07/20 Javascript
小结Node.js中非阻塞IO和事件循环
2014/09/18 Javascript
自定义函数实现IE7与IE8不兼容js中trim函数的问题
2015/02/03 Javascript
Node.js测试中的Mock文件系统详解
2016/11/21 Javascript
js调用刷新界面的几种方式
2017/05/03 Javascript
深入理解Angular.JS中的Scope继承
2017/06/04 Javascript
基于vue2.0动态组件及render详解
2018/03/17 Javascript
vue-cli与webpack处理静态资源的方法及webpack打包的坑
2018/05/15 Javascript
微信头像地址失效踩坑记附带解决方案
2019/09/23 Javascript
Python中使用Queue和Condition进行线程同步的方法
2016/01/19 Python
Python实现简易Web爬虫详解
2018/01/03 Python
浅谈Python Opencv中gamma变换的使用详解
2018/04/02 Python
Python json模块dumps、loads操作示例
2018/09/06 Python
python程序控制NAO机器人行走
2019/04/29 Python
Python爬虫库BeautifulSoup获取对象(标签)名,属性,内容,注释
2020/01/25 Python
Python几种常见算法汇总
2020/06/02 Python
Python爬虫设置ip代理过程解析
2020/07/20 Python
Selenium 配置启动项参数的方法
2020/12/04 Python
pytorch 中forward 的用法与解释说明
2021/02/26 Python
澳大利亚在线购买儿童玩具:Toy Universe
2017/12/28 全球购物
贝玲妃英国官网:Benefit英国
2018/02/03 全球购物
阿根廷首家户外用品制造商和经销商:Montagne
2018/02/12 全球购物
软件缺陷的分类都有哪些
2014/08/22 面试题
网上卖盒饭创业计划书
2014/01/26 职场文书
初二学习计划书范文
2014/04/27 职场文书
关于安全演讲稿
2014/05/09 职场文书
2014年个人技术工作总结
2014/12/08 职场文书
事业单位考察材料范文
2014/12/25 职场文书
解决Pytorch中关于model.eval的问题
2021/05/22 Python
教你在 Java 中实现 Dijkstra 最短路算法的方法
2022/04/08 Java/Android