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 相关文章推荐
PHP4 与 MySQL 交互使用
Oct 09 PHP
编写漂亮的代码 - 将后台程序与前端程序分开
Apr 23 PHP
PHP反转字符串函数strrev()函数的用法
Feb 04 PHP
Linux下CoreSeek及PHP扩展模块的安装
Sep 23 PHP
解析PHP获取当前网址及域名的实现代码
Jun 23 PHP
php函数间的参数传递(值传递/引用传递)
Sep 23 PHP
PHP图片处理之图片背景、画布操作
Nov 19 PHP
php将图片文件转换成二进制输出的方法
Jun 10 PHP
php使用CURL不依赖COOKIEJAR获取COOKIE的方法
Jun 17 PHP
php判断手机浏览还是web浏览,并执行相应的动作简单实例
Jul 28 PHP
PHP实现的迪科斯彻(Dijkstra)最短路径算法实例
Sep 16 PHP
PHP实现权限管理功能示例
Sep 22 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 MVC框架skymvc支持多文件上传
2016/05/26 PHP
THinkPHP获取客户端IP与IP地址查询的方法
2016/11/14 PHP
php中bind_param()函数用法分析
2017/03/28 PHP
php+ajax实现仿百度查询下拉内容功能示例
2017/10/20 PHP
MacOS下PHP7.1升级到PHP7.4.15的方法
2021/02/22 PHP
How to Auto Include a Javascript File
2007/02/02 Javascript
ie和firefox不兼容的解决方法集合
2009/04/28 Javascript
jquery checkbox,radio是否选中的判断代码
2010/03/20 Javascript
Javascript中的for in循环和hasOwnProperty结合使用
2013/06/05 Javascript
js如何取消事件冒泡
2013/09/23 Javascript
JS Replace 全部替换字符的用法小结
2013/12/24 Javascript
JavaScript学习笔记之数组去重
2016/03/23 Javascript
BootStrap tab选项卡使用小结
2020/08/09 Javascript
微信开发 js实现tabs选项卡效果
2016/10/28 Javascript
Angularjs的Controller间通信机制实例分析
2016/11/07 Javascript
canvas+gif.js打造自己的数字雨头像的示例代码
2017/10/26 Javascript
cordova入门基础教程及使用中遇到的一些问题总结
2017/11/14 Javascript
利用vue.js实现被选中状态的改变方法
2018/02/08 Javascript
antd vue table跨行合并单元格,并且自定义内容实例
2020/10/28 Javascript
JavaScript实现鼠标经过表格某行时此行变色
2020/11/20 Javascript
Python压缩和解压缩zip文件
2015/02/14 Python
详细探究Python中的字典容器
2015/04/14 Python
python从sqlite读取并显示数据的方法
2015/05/08 Python
Python单例模式实例详解
2017/03/01 Python
python检测文件夹变化,并拷贝有更新的文件到对应目录的方法
2018/10/17 Python
python的几种矩阵相乘的公式详解
2019/07/10 Python
django 数据库连接模块解析及简单长连接改造方法
2019/08/29 Python
Python sklearn中的.fit与.predict的用法说明
2020/06/28 Python
OpenCV灰度化之后图片为绿色的解决
2020/12/01 Python
纯CSS3制作的简洁蓝白风格的登录模板(非IE效果更好)
2013/08/11 HTML / CSS
Html5插件教程之添加浏览器放大镜效果的商品橱窗
2016/01/07 HTML / CSS
Ancheer官方户外和运动商店:销售电动自行车
2019/08/07 全球购物
党的群众路线教育实践活动学习笔记
2014/11/05 职场文书
巾帼文明岗事迹材料
2014/12/24 职场文书
清明节网上祭英烈寄语2015
2015/03/04 职场文书
525心理健康活动总结
2015/05/08 职场文书