文档章节

YII assets使用

Surjur
 Surjur
发布于 2015/07/09 14:11
字数 491
阅读 128
收藏 2

为什么用YII assets

1.assets的作用是方便模块化,插件化的,一般来说出于安全原因不允许通过url访问protected下面的文件 ,但是我们又希望将module单独出来,所以需要使用发布,即将一个目录下的文件复制一份到assets下面方便通过url访问

[php]  view plain copy
  1. $assets = Yii::getPathOfAlias('ext').'/css';  
  2. //$baseUrl = Yii::app()->getAssetManager()->publish($assets);  
  3. $baseUrl = Yii::app()->assetManager->publish($assets);  //extensions/css发布到assets的创建一个随机不冲突的文件夹下  
  4. Yii::app()->clientScript->registerCssFile($baseUrl.'/main.css');//引用assets下面的main.css  

2.如果一个模块需要添加使用资源,直接从webroot中引用添加即可。
但是试图创建一个模块能够在任何地方引用,且资源独立并能够避免命名冲突 。
你如何保证你的文件名不会与一些零散的应用程序的尝试使用相同名称的文件冲突,对于js,images,css也一样。
通过CAssetManager,Yii::app()->assetManager能够自动的将私有资源publish到公共目录下webroot/assets

 

下面以admin module为例

1、把需要用到的资源放在modules/admin/assets下。

2、然后通过 CAssetManager,Yii::app()->assetManager能够自动的将私有资源publish到公共目录下 网站目录/assets

3、Yii会自动在网站目录的/assets下创建一个随机不冲突的文件夹,如2b31b42b,并把你的modules/admin/assets目录下的文件拷贝过去。

通过如下代码获得,修改protected\modules\admin\AdminModule.php文件,

[php]  view plain copy
  1. <?php  
  2. class AdminModule extends CWebModule  
  3. {  
  4.     private $_assetsUrl;  
  5.   
  6.     public function getAssetsUrl()  
  7.     {  
  8.         if($this->_assetsUrl===null)  
  9.             $this->_assetsUrl=Yii::app()->getAssetManager()->publish(Yii::getPathOfAlias('application.modules.admin.assets'));  
  10.         return $this->_assetsUrl;  
  11.     }  
  12.   
  13.     public function setAssetsUrl($value)  
  14.     {  
  15.         $this->_assetsUrl=$value;  
  16.     }  
  17. }  

然后,在/protected/modules/admin/views/layouts/main.php中

使用$this->module->assetsUrl就可以调用你的css等文件了。

[php]  view plain copy
  1. <link rel="stylesheet" type="text/css" href="<?php echo $this->module->assetsUrl; ?>/css/screen.css"/>  

使用前强制更新asset

[php]  view plain copy
  1. $baseJsUrl = Yii::app()->getAssetManager()->publish($baseJsPath, false, -1, YII_DEBUG);  

本文转载自:http://blog.csdn.net/xiaojun1288/article/details/7480274

共有 人打赏支持
Surjur
粉丝 26
博文 193
码字总数 12053
作品 0
杭州
程序员
私信 提问
Yii basic 去掉index.php 后缀

安装 Yii 社区推荐:掘金是一个面向程序员的技术社区,从后端到架构,从 PHP 最佳实践到一线大厂经验分享,无论入门还是进阶,来掘金你不会错过后端开发的任何一个技术干货。 你可以通过两种...

全栈coder
2018/11/22
0
0
在 Yii2 中使用 CDN

本文将介绍如何在已开发或正在开发的 yii2 程序中使用 CDN 服务。 安装 扩展 使用 composer 安装 执行命令 或将下面代码添加到 文件中。 修改配置文件 修改配置文件 如下: 配置数组中的 为需...

首席烤地瓜
2016/11/14
76
1
熊川/openadm-yii2

OpenAdm OpenAdm是一个基于Yii2的后台开源骨架,集成了用户和插件系统,使用主题功能,默认使用AdminLTE2的模板的主题,可以非常方便的开发新的功能。 Demo 地址: http://yii2.openadm.com 后台...

熊川
2017/01/19
0
0
Yii2中如何将Jquery放在head中的方法

今天在写一个扩展,扩展中要求,扩展中可以任意地方输出jquery代码,那么jquery就必须在head中首先加载。 大家都知道Yii2中的assets js资源都是在末尾加载的,看了下文档,有几种方法,简单记...

卖小女孩的小火柴
2015/12/18
1K
1
基于 Yii2 的后台骨架--OpenAdm-Yii2

OpenAdm 是一个基于 Yii2 的后台开源骨架,集成了用户和插件系统,使用主题功能,默认使 用AdminLTE2 的模板的主题,可以非常方便的开发新的功能。 点击此处查看 Demo 特性: 1.天然集成RBAC权限...

熊川
2017/01/19
6.4K
2

没有更多内容

加载失败,请刷新页面

加载更多

JS 调用Angularjs 的方法

// 1. 获取 Controllerlet appElement = document.querySelector('[data-ng-controller=MessagesCtrl]');let scope = angular.element(appElement).scope();// 2. 调用方法scope.l......

Moks角木
40分钟前
2
0
dubbo+zookeeper与 eureka的区别

CAP CAP 原则指的是在一个分布式系统中,Consistency(一致性)、 Availability(可用性)、Partition tolerance(分区容错性),三者不可兼得 在分布式架构里, P必须有 Zookeeper保证C P 当...

群星纪元
49分钟前
4
0
云计算之边缘计算大势所趋

如果说边缘计算是公同认定的目标,那么我们看到,不同类型的厂商基于自身的特点,会从不同的起点、沿着不同的路径,向这个目标奔跑。上次参加阿里云的一次活动,看到他们将边缘计算的厂商分成...

linuxCool
54分钟前
1
0
前端通过后端传过来的'\n' ,''等字符串换行失败问题

后台推送换行符 '\n' 或 '<br/>' 等字符串到前台不会换行 详细描述 后台逻辑处理返回String字符串,其中包含\n或<br/>等换行符号,但是前端渲染时候却并没有真正的换行 也尝试了大佬的各种 ...

下次用oschina
今天
2
0
volatile能保证有序性吗?

在前面提到volatile关键字能禁止指令重排序,所以volatile能在一定程度上保证有序性。   volatile关键字禁止指令重排序有两层意思:   1)当程序执行到volatile变量的读操作或者写操作时...

无精疯
今天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部