为什么用YII assets

1.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为例

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"/>

使用前强制更新asset

$baseJsUrl = Yii::app()->getAssetManager()->publish($baseJsPath, false, -1, YII_DEBUG);

YII assets使用相关推荐

  1. yii框架的下拉框多选,设置默认值等(dropDownList)

    一.前言 根据需求,需要更改下拉框为多选框.本来以为只是很简单的东西,但是实际修改起来却碰到不少bug,多选框无法选中,给多选框赋默认值等.这里记录一下 二.修改单选下拉框为多选下拉框 echo $f ...

  2. Yii2 前端资源使用

    YII2 前端资源 定义资源包 <?phpnamespace app\assets;use yii\web\AssetBundle;class AppAsset extends AssetBun ...

  3. 通过yiic来创建yii应用

    一.通过yiic来创建yii应用(*yiic命令在yii下载包的framework目录下)1.把你自已的php环境添加到系统环境变量中. 2.在命令行下输入: yiic webapp 位置\名称 yi ...

  4. Application runtime path /opt/lampp/htdocs/yii/test/protected/runtime is not valid. 错误

    原因:把windows版的Yii框架写的程序中的拷到Linux去,assets和runtime目录对Group和其他的权限不够. 解决方案:点击这2个文件的属性,属性框全选好了,权限777了. cd  ...

  5. php配置默认index.php,Apache的vhost中配置默认访问入口index-test.php的方法(Yii)

    最近的参与的Yii项目有多个分支,所以在入口文件里面有区分(index.php index-test.php index-beta.php)等.不同的入口文件对应不同的环境和配置. 这个时候在本地建立 ...

  6. Yii 多应用多模块

    本文以YII 2.0.7为例. 概述 首先看看多应用和多模块的特点: 多应用的特点: 独立配置文件 独立域名 多模块的特点: 统一配置文件 统一域名 那么,实际该怎么决定使用多应用还是多模块呢? 对于 ...

  7. [Yii Framework] Yii如何实现前后台的session分离

    Yii Framework实现前后台frontend,backend分离的方法有几种,总结如下: 1. 分开入口文件 目录结构 index.php admin.php assets/ ...其它目录 ...

  8. Yii 框架学习--03 多应用多模块

    本文以YII 2.0.7为例. 概述 首先看看多应用和多模块的特点: 多应用的特点: 独立配置文件 独立域名 多模块的特点: 统一配置文件 统一域名 那么,实际该怎么决定使用多应用还是多模块呢? 对于 ...

  9. Yii框架特点及测试考虑

    1. 简介 Yii 是一个基于部件.用于开发大型 Web 应用的高性能 PHP 框架.它将 Web 编程中的可重用性发挥到极致,能够显著加速开发进程.Yii(读作"易")代表简单( ...

最新文章

  1. Android中Gallery和ImageSwitcher的使用
  2. java 网站计数器_Java Bean实现网页来访计数器
  3. [µC/GUI 学习]µC/GUI移植
  4. postgresql是如何求年龄的_Postgresql 通过出生日期获取年龄的操作
  5. echarts 获取点击的y轴数值_用 Python 自动获取NBA现役球员的职业生涯数据曲线
  6. rr计算机专业英语,《计算机专业英语》电子教本8.pdf
  7. python中os模块里有哪些类_python-os模块的常用方法
  8. radvd移植到arm交叉编译问题解决
  9. Python学习(六) Python数据类型:字典(重要)
  10. python操作mysql时mysqldb和pymysql的安装和使用
  11. python手机端抢票大麦网_大麦网抢票攻略1.0
  12. python立方根求解_python – 如何获得立方根的整数?
  13. unsigned详讲(干货满满)
  14. fluxbox_使用Fluxbox Linux桌面作为窗口管理器
  15. 中文数藏与CIC国信公链等有关机构顺利召开国内数字藏品规划标准研讨会
  16. 揭秘5G+AI时代的机器人世界!【附报告下载】
  17. ChatGPT小技巧:论文降重
  18. 搭搭云 新世代超级应用平台 JNPF快速开发平台框架 3.4.7最新版源码
  19. vue中使用element-tiptap富文本编辑器
  20. 2021章节练习基础(案例精选)1-10

热门文章

  1. SqlServer数据库分离和附加
  2. 【统计模型】肺活量影响因素分析报告
  3. Android实现音乐示波器、均衡器、重低音和音场功能
  4. 原来是这样查快递单号的
  5. 理解霍夫变换及圆检测
  6. 【GRNN回归】基于matlab遗传算法优化GRNN数据回归拟合【含Matlab源码 1401期】
  7. 计算机毕业设计SSM成都美食交流平台【附源码数据库】
  8. 用Media Player播放器将音乐CD翻录下来
  9. The driver has not received any packets from the server.
  10. 牛客小白66 A-F