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 相关文章推荐
下载文件的点击数回填
Oct 09 PHP
使用php伪造referer的方法 利用referer防止图片盗链
Jan 20 PHP
显示youtube视频缩略图和Vimeo视频缩略图代码分享
Feb 13 PHP
php类声明和php类使用方法示例分享
Mar 29 PHP
学习php设计模式 php实现建造者模式
Dec 07 PHP
Laravel路由设定和子路由设定实例分析
Mar 30 PHP
Yii基于CActiveForm的Ajax数据验证用法示例
Jul 14 PHP
php获取flash尺寸详细数据的方法
Nov 12 PHP
php实现背景图上添加圆形logo图标的方法
Nov 17 PHP
PHP中SQL查询语句的id=%d解释(推荐)
Dec 10 PHP
php写入文件不覆盖的实例讲解
Sep 17 PHP
浅谈laravel中的关联查询with的问题
Oct 10 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动态创建Web站点的方法
2011/08/14 PHP
PHP把网页保存为word文件的三种方法
2014/04/01 PHP
ThinkPHP之M方法实例详解
2014/06/20 PHP
PHP中overload与override的区别
2017/02/13 PHP
一段利用WSH修改和查看IP配置的代码
2008/05/11 Javascript
Jquery实现列表(隔行换色,全选,鼠标滑过当前行)效果实例
2013/06/09 Javascript
移动节点的jquery代码
2014/01/13 Javascript
Jquery之Bind方法参数传递与接收的三种方法
2014/06/24 Javascript
Javascript基础教程之JavaScript语法
2015/01/18 Javascript
js实现点击按钮后给Div图层设置随机背景颜色的方法
2015/05/06 Javascript
javascript+HTML5的Canvas实现Lab单车动画效果
2015/08/07 Javascript
AngularJS HTML DOM详解及示例代码
2016/08/17 Javascript
AngularJs Dependency Injection(DI,依赖注入)
2016/09/02 Javascript
angular4 如何在全局设置路由跳转动画的方法
2017/08/30 Javascript
30分钟快速实现小程序语音识别功能
2018/11/27 Javascript
layui清空,重置表单数据的实例
2019/09/12 Javascript
JS document form表单元素操作完整示例
2020/01/13 Javascript
vue实现整屏滚动切换
2020/06/29 Javascript
jQuery实现简单全选框
2020/09/13 jQuery
Python for Informatics 第11章之正则表达式(四)
2016/04/21 Python
使用python Fabric动态修改远程机器hosts的方法
2018/10/26 Python
Python Image模块基本图像处理操作小结
2019/04/13 Python
Python字典的概念及常见应用实例详解
2019/10/30 Python
python基于property()函数定义属性
2020/01/22 Python
pandas实现导出数据的四种方式
2020/12/13 Python
表达自我的市场:Society6
2018/08/01 全球购物
高中的自我鉴定
2013/12/16 职场文书
经典公益广告词
2014/03/13 职场文书
质量承诺书范文
2014/03/27 职场文书
孝老爱亲模范事迹材料
2014/05/25 职场文书
优秀党支部书记事迹材料
2014/05/29 职场文书
公共场所禁烟标语
2014/06/25 职场文书
2015年先进个人自荐书
2015/03/24 职场文书
会议开幕致辞怎么写
2016/03/03 职场文书
如何用Node.js编写内存效率高的应用程序
2021/04/30 Javascript
java设计模式--原型模式详解
2021/07/21 Java/Android