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 Memcached + APC + 文件缓存封装实现代码
Mar 11 PHP
使ecshop模板中可引用常量的实现方法
Jun 02 PHP
从手册去理解分析PHP session机制
Jul 17 PHP
PHP取整函数:ceil,floor,round,intval的区别详细解析
Aug 31 PHP
php function用法如何递归及return和echo区别
Mar 07 PHP
php选择排序法实现数组排序实例分析
Feb 16 PHP
PHP输出一个等腰三角形的方法
May 12 PHP
php将金额数字转化为中文大写
Jul 09 PHP
PHP单链表的实现代码
Jul 05 PHP
php 从一个数组中随机的取出若干个不同的数实例
Dec 31 PHP
Yii框架弹出窗口组件CJuiDialog用法分析
Jan 07 PHP
php 二维数组快速排序算法的实现代码
Oct 17 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 无限极分类
2008/03/27 PHP
9个PHP开发常用功能函数小结
2011/07/15 PHP
PHP 时间日期操作实战
2011/08/26 PHP
探讨Smarty中如何获取数组的长度以及smarty调用php函数的详解
2013/06/20 PHP
浅析PHP关键词替换的类(避免重复替换,保留与还原原始链接)
2015/09/22 PHP
php有效防止同一用户多次登录
2015/11/19 PHP
js实现同一页面多个不同运动效果的方法
2015/04/10 Javascript
javascript中clipboardData对象用法详解
2015/05/13 Javascript
使用JavaScript脚本无法直接改变Asp.net中Checkbox控件的Enable属性的解决方法
2015/09/16 Javascript
使用JQuery 加载页面时调用JS的实现方法
2016/05/30 Javascript
vue调用高德地图实例代码
2017/04/28 Javascript
Vue-cli proxyTable 解决开发环境的跨域问题详解
2017/05/18 Javascript
vue-cli如何引入bootstrap工具的方法
2017/10/19 Javascript
JS去掉字符串末尾的标点符号及删除最后一个字符的方法
2017/10/24 Javascript
小程序实现五星点评效果
2018/11/03 Javascript
Electron 如何调用本地模块的方法
2019/02/01 Javascript
Vue 中使用富文本编译器wangEditor3的方法
2019/09/26 Javascript
Vue 用Vant实现时间选择器的示例代码
2019/10/25 Javascript
vue动态路由:路由参数改变,视图不更新问题的解决
2019/11/05 Javascript
vue 虚拟DOM的原理
2020/10/03 Javascript
[03:48]2014DOTA2 TI专访71DK夺冠不靠小组赛高排名
2014/07/11 DOTA
[46:00]Ti4 冒泡赛第二轮LGD vs C9 2
2014/07/14 DOTA
python发腾讯微博代码分享
2014/01/10 Python
Python异常处理总结
2014/08/15 Python
Flask框架WTForm表单用法示例
2018/07/20 Python
python调用并链接MATLAB脚本详解
2019/07/05 Python
使用pytorch和torchtext进行文本分类的实例
2020/01/08 Python
美国学校校服,儿童和婴儿服装:Cookie’s Kids
2016/10/14 全球购物
波兰家具和室内装饰品购物网站:Vivre
2018/04/10 全球购物
linux面试题参考答案(8)
2016/04/19 面试题
主题团日活动总结
2014/06/25 职场文书
高校师德师风自我剖析材料
2014/09/29 职场文书
2014光棍节大学生联谊活动方案
2014/10/10 职场文书
加强干部作风建设整改方案
2014/10/24 职场文书
社会主义核心价值观主题教育活动总结
2015/05/07 职场文书
鲲鹏 CentOS 7 安装Python3.7
2022/05/11 Servers