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 文章中的远程图片采集到本地的代码
Jul 30 PHP
网页游戏开发入门教程二(游戏模式+系统)
Nov 02 PHP
PHP实现支持GET,POST,Multipart/form-data的HTTP请求类
Sep 24 PHP
PHP中魔术变量__METHOD__与__FUNCTION__的区别
Sep 29 PHP
微信公众号点击菜单即可打开并登录微站的实现方法
Nov 14 PHP
PHP MSSQL 分页实例
Apr 13 PHP
PHP简单判断iPhone、iPad、Android及PC设备的方法
Oct 11 PHP
[原创]PHP实现生成vcf vcard文件功能类定义与使用方法详解【附demo源码下载】
Sep 02 PHP
vmware linux系统安装最新的php7图解
Apr 14 PHP
PHP面向对象程序设计之对象克隆clone和魔术方法__clone()用法分析
Jun 12 PHP
discuz论坛更换域名,详细文件修改步骤
Dec 09 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
DISCUZ 论坛管理员密码忘记的解决方法
2009/05/14 PHP
php 计算两个时间戳相隔的时间的函数(小时)
2009/12/18 PHP
php排序算法实例分析
2016/10/17 PHP
PHP PDOStatement::setFetchMode讲解
2019/02/03 PHP
JS 页面内容搜索,类似于 Ctrl+F功能的实现代码
2007/08/13 Javascript
判断脚本加载是否完成的方法
2009/05/26 Javascript
Prototype Array对象 学习
2009/07/19 Javascript
JavaScript游戏之优化篇
2010/11/08 Javascript
jBox 2.3基于jquery的最新多功能对话框插件 常见使用问题解答
2011/11/10 Javascript
JavaScript中的正则表达式简明总结
2014/04/04 Javascript
js实现获取焦点后光标在字符串后
2014/09/17 Javascript
浅谈nodeName,nodeValue,nodeType,typeof 的区别
2015/01/13 Javascript
JS动态修改图片的URL(src)的方法
2015/04/01 Javascript
JavaScript时间转换处理函数
2015/04/14 Javascript
JS实现获取来自百度,Google,soso,sogou关键词的方法
2016/12/21 Javascript
Vue2.x中的Render函数详解
2017/05/30 Javascript
基于JS实现快速读取TXT文件
2020/08/25 Javascript
自动化Nginx服务器的反向代理的配置方法
2015/06/28 Python
修复CentOS7升级Python到3.6版本后yum不能正确使用的解决方法
2018/01/26 Python
python 定时修改数据库的示例代码
2018/04/08 Python
PyQt5的安装配置过程,将ui文件转为py文件后显示窗口的实例
2019/06/19 Python
python pytest进阶之conftest.py详解
2019/06/27 Python
python opencv鼠标事件实现画框圈定目标获取坐标信息
2020/04/18 Python
Python 多线程搜索txt文件的内容,并写入搜到的内容(Lock)方法
2019/08/23 Python
在keras中获取某一层上的feature map实例
2020/01/24 Python
Python调用C语言程序方法解析
2020/07/07 Python
怀俄明州飞钓:Platte River Fly Shop
2017/12/28 全球购物
Talbots官网:美国成熟女装品牌
2019/11/15 全球购物
房屋改造计划书
2014/01/10 职场文书
高中物理教学反思
2014/02/08 职场文书
财务会计大学生自我评价
2014/04/09 职场文书
休假证明书
2015/06/24 职场文书
圣诞晚会主持词
2015/07/01 职场文书
MySQL触发器的使用
2021/05/24 MySQL
详解Java实践之适配器模式
2021/06/18 Java/Android
springboot应用服务启动事件的监听实现
2022/04/06 Java/Android