Yii2创建多界面主题(Theme)的方法


Posted in PHP onOctober 08, 2016

本文实例讲述了Yii2创建多界面主题(Theme)的方法。分享给大家供大家参考,具体如下:

Yii2界面主题上的设计总体上和Yii1.x保持一致,区别在于两个地方:

1. 由于Yii2引入了独立的视图(View)类,因此界面主题(Theme)也交由视图来管理;

2. 视图文件和Web资源在目录上做了分离(在应用程序模板中,分别对应于views和web目录)

以高级应用程序模板为例,

首先在frontend/views和frontend/web目录下分别创建一个themes/{your theme name}目录,比如themes/basic。

然后在应用程序配置中,修改配置如下:

'view' => [
  'theme' => [
    'pathMap' => ['@frontend/views' => '@frontend/themes/basic/views'],
    'baseUrl' => '@web/themes/basic',
  ],
],

修改AppAssets的$baseUrl变量为:

class AppAsset extends AssetBundle
{
  public $basePath = '@webroot';
  public $baseUrl = '@web/themes/basic';
...
}

最后在views/themes/basic下面创建页面(如site.php),在web/themes/basic下面创建资源(如css/site.css)。

这样,你就可以使用这个新建的界面主题了,在渲染视图时,Yii2会首先查找你定义的theme目录,然后查找默认目录。

要创建多界面主题,只需要按相同步骤在themes目录下添加新的theme,比如themes/advanced。

如果要在视图文件中显式引用某个界面主题下的资源,可以使用 $this->theme->baseUrl ...

希望本文所述对大家基于Yii框架的PHP程序设计有所帮助。

PHP 相关文章推荐
php 文件上传后缀名与文件类型对照表(几乎涵盖所有文件)
May 16 PHP
PHP autoload与spl_autoload自动加载机制的深入理解
Jun 05 PHP
php之Memcache学习笔记
Jun 17 PHP
php数组转换js数组操作及json_encode的用法详解
Oct 26 PHP
PHP+Mysql+Ajax+JS实现省市区三级联动
May 23 PHP
php计算两个坐标(经度,纬度)之间距离的方法
Apr 17 PHP
UTF-8正则表达式如何匹配汉字
Aug 03 PHP
ThinkPHP框架安全实现分析
Mar 14 PHP
php实现当前页面点击下载文件的实例代码
Nov 16 PHP
Kindeditor编辑器添加图片上传水印功能(php代码)
Aug 03 PHP
thinkPHP框架中执行原生SQL语句的方法
Oct 25 PHP
WordPress伪静态规则设置代码实例
Dec 10 PHP
php微信开发之自定义菜单完整流程
Oct 08 #PHP
yii2.0数据库迁移教程【多个数据库同时同步数据】
Oct 08 #PHP
yii2高级应用之自定义组件实现全局使用图片上传功能的方法
Oct 08 #PHP
ThinkPHP发送邮件示例代码
Oct 08 #PHP
Yii2针对游客、用户防范规则和限制的解决方法分析
Oct 08 #PHP
Netbeans 8.2与PHP相关的新特性介绍
Oct 08 #PHP
Laravel中基于Artisan View扩展包创建及删除应用视图文件的方法
Oct 08 #PHP
You might like
支持oicq头像的留言簿(二)
2006/10/09 PHP
php mysql PDO 查询操作的实例详解
2017/09/23 PHP
srcElement表格样式
2006/09/03 Javascript
javascript开发随笔一 preventDefault的必要
2011/11/25 Javascript
js对象关系图 方便dom操作
2012/03/18 Javascript
js实现在字符串中提取数字
2013/11/05 Javascript
jquery获取URL中参数解决中文乱码问题的两种方法
2013/12/18 Javascript
js无刷新操作table的行和列
2014/03/27 Javascript
jquery事件preventDefault()方法用法实例
2015/01/16 Javascript
Node.js实用代码段之获取Buffer对象字节长度
2016/03/17 Javascript
快速掌握Node.js模块封装及使用
2016/03/21 Javascript
js只执行1次的函数示例
2016/07/20 Javascript
jquery实现网站列表切换效果的2种方法
2016/08/12 Javascript
js中获取键盘事件的简单实现方法
2016/10/10 Javascript
vue-router 中router-view不能渲染的解决方法
2017/05/23 Javascript
Textarea输入字数限制实例(兼容iOS&安卓)
2017/07/06 Javascript
从Vuex中取出数组赋值给新的数组,新数组push时报错的解决方法
2018/09/18 Javascript
Vue使用NProgress进度条的方法
2019/09/21 Javascript
Vue数组响应式操作及高阶函数使用代码详解
2020/08/01 Javascript
[08:44]DOTA2发布会群星聚首 我们都是刀塔人
2014/03/21 DOTA
如何解决django配置settings时遇到Could not import settings 'conf.local'
2014/11/18 Python
线程和进程的区别及Python代码实例
2015/02/04 Python
Python3数据库操作包pymysql的操作方法
2018/07/16 Python
Python实现提取XML内容并保存到Excel中的方法
2018/09/01 Python
Python 中的lambda函数介绍
2018/10/10 Python
Mac下Anaconda的安装和使用教程
2018/11/29 Python
用OpenCV将视频分解成单帧图片,图片合成视频示例
2019/12/10 Python
迎八一活动主题
2014/01/31 职场文书
电视购物广告词
2014/03/19 职场文书
进口业务员岗位职责
2014/04/06 职场文书
服务承诺书范文
2014/05/19 职场文书
小学秋季运动会报道稿
2014/09/30 职场文书
病人写给医生的感谢信
2015/01/23 职场文书
建筑质检员岗位职责
2015/04/08 职场文书
企业内部管理控制:采购授权审批制度范本
2020/01/19 职场文书
MySQL 使用事件(Events)完成计划任务
2021/05/24 MySQL