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 JSON 数据解析代码
May 26 PHP
php下关于Cannot use a scalar value as an array的解决办法
Aug 08 PHP
深入php之规范编程命名小结
May 15 PHP
php中通过curl检测页面是否被百度收录
Sep 27 PHP
ThinkPHP3.1查询语言详解
Jun 19 PHP
常见php数据文件缓存类汇总
Dec 05 PHP
thinkphp缓存技术详解
Dec 09 PHP
php+Mysqli利用事务处理转账问题实例
Feb 11 PHP
PHP获取文件扩展名的4种方法
Nov 24 PHP
Yii框架中sphinx索引配置方法解析
Oct 18 PHP
Laravel自定义 封装便捷返回Json数据格式的引用方法
Sep 29 PHP
laravel5 Eloquent 实现事务方式
Oct 21 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
详解WordPress中简码格式标签编写的基本方法
2015/12/22 PHP
Ubuntu VPS中wordpress网站打开时提示”建立数据库连接错误”的解决办法
2016/11/03 PHP
jQuery MD5加密实现代码
2010/03/15 Javascript
灵活应用js调试技巧解决样式问题的步骤分享
2012/03/15 Javascript
JavaScript给按钮绑定点击事件(onclick)的方法
2015/04/07 Javascript
详细分析JavaScript变量类型
2015/07/08 Javascript
jQuery实现网页顶部固定导航效果代码
2015/12/24 Javascript
Vue中添加过渡效果的方法
2017/03/16 Javascript
php 修改密码实现代码
2017/05/24 Javascript
微信小程序授权登录及解密unionId出错的方法
2018/09/26 Javascript
JS 实现获取验证码 倒计时功能
2018/10/29 Javascript
详解mpvue开发微信小程序基础知识
2019/09/23 Javascript
extjs图表绘制之条形图实现方法分析
2020/03/06 Javascript
vue-router 路由传参用法实例分析
2020/03/06 Javascript
详解JavaScript中的数据类型,以及检测数据类型的方法
2020/09/17 Javascript
[04:00]黄浦江畔,再会英雄——完美世界DOTA2 TI9应援视频
2019/07/31 DOTA
python通过imaplib模块读取gmail里邮件的方法
2015/05/08 Python
Django框架中的对象列表视图使用示例
2015/07/21 Python
python实现的分析并统计nginx日志数据功能示例
2019/12/21 Python
pytorch方法测试详解——归一化(BatchNorm2d)
2020/01/15 Python
python GUI库图形界面开发之PyQt5滑块条控件QSlider详细使用方法与实例
2020/02/28 Python
python 元组的使用方法
2020/06/09 Python
Django生成数据库及添加用户报错解决方案
2020/10/09 Python
HTML5 Canvas的性能提高技巧经验分享
2013/07/02 HTML / CSS
strlen的几种不同实现方法
2013/05/31 面试题
新教师工作感言
2014/02/16 职场文书
《满井游记》教学反思
2014/02/26 职场文书
金融管理专业求职信
2014/07/10 职场文书
道路交通事故赔偿协议书
2014/10/24 职场文书
2014年老干部工作总结
2014/11/21 职场文书
罚站检讨书
2015/01/29 职场文书
2016国培研修心得体会
2016/01/08 职场文书
Nginx服务器添加Systemd自定义服务过程解析
2021/03/31 Servers
python实现监听键盘
2021/04/26 Python
浏览器常用基本操作之python3+selenium4自动化测试(基础篇3)
2021/05/21 Python
Java Redisson多策略注解限流
2022/09/23 Java/Android