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 选项及相关信息函数库
Dec 04 PHP
一个简单的php实现的MySQL数据浏览器
Mar 11 PHP
php将数据库导出成excel的方法
May 07 PHP
php上传图片到指定位置路径保存到数据库的具体实现
Dec 30 PHP
php截取中文字符串函数实例
Feb 23 PHP
php获取图片信息的方法详解
Dec 10 PHP
Twig模板引擎用法入门教程
Jan 20 PHP
PHP sleep()函数, usleep()函数
Aug 25 PHP
laravel框架中间件 except 和 only 的用法示例
Jul 12 PHP
php设计模式之工厂模式用法经典实例分析
Sep 20 PHP
php 使用 __call实现重载功能示例
Nov 18 PHP
PHP实用小技巧之调用录像的方法
Dec 05 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和MySql来与ODBC数据连接
2006/10/09 PHP
CodeIgniter生成静态页的方法
2016/05/17 PHP
YII框架行为behaviors用法示例
2019/04/26 PHP
PHP哈希表实现算法原理解析
2020/12/11 PHP
javascript web页面刷新的方法收集
2009/07/02 Javascript
高性能web开发 如何加载JS,JS应该放在什么位置?
2010/05/14 Javascript
JSON 数据格式介绍
2012/01/13 Javascript
JS 在指定数组中随机取出N个不重复的数据
2014/06/10 Javascript
js实现带关闭按钮始终显示在网页最底部工具条的方法
2015/03/02 Javascript
深入理解jquery跨域请求方法
2016/05/18 Javascript
D3.js实现折线图的方法详解
2016/09/21 Javascript
微信小程序中form 表单提交和取值实例详解
2017/04/20 Javascript
基于JavaScript实现数码时钟效果
2020/03/30 Javascript
JavaScript上传文件时不用刷新页面方法总结(推荐)
2017/08/15 Javascript
浅谈angular4实际项目搭建总结
2017/12/01 Javascript
vue路由懒加载的实现方法
2018/03/12 Javascript
结合Vue控制字符和字节的显示个数的示例
2018/05/17 Javascript
Vue CL3 配置路径别名详解
2019/05/30 Javascript
python网络编程之文件下载实例分析
2015/05/20 Python
python获得一个月有多少天的方法
2015/06/04 Python
python实现DES加密解密方法实例详解
2015/06/30 Python
Pycharm导入Python包,模块的图文教程
2018/06/13 Python
python 使用正则表达式按照多个空格分割字符的实例
2018/12/20 Python
django 中QuerySet特性功能详解
2019/07/25 Python
安装pyecharts1.8.0版本后导入pyecharts模块绘图时报错: “所有图表类型将在 v1.9.0 版本开始强制使用 ChartItem 进行数据项配置 ”的解决方法
2020/08/18 Python
python list的index()和find()的实现
2020/11/16 Python
德国最大的网上鞋店之一:Schuhe24.de
2017/06/10 全球购物
Omio荷兰:预订火车、巴士和机票
2018/11/04 全球购物
字符串str除首尾字符外的其他字符按升序排列
2013/03/08 面试题
一套.net面试题及答案
2016/11/02 面试题
中专自我鉴定范文
2013/10/16 职场文书
大学生职业生涯规划方案
2014/01/03 职场文书
小学生国旗下演讲稿
2014/04/25 职场文书
中学生打架检讨书之500字
2019/08/06 职场文书
用CSS3画一个爱心
2021/04/27 HTML / CSS
Go gorilla/sessions库安装使用
2022/08/14 Golang