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 echo 输出字符串函数详解
May 13 PHP
PHP数组 为文章加关键字连接 文章内容自动加链接
Dec 29 PHP
解析数组非数字键名引号的必要性
Aug 09 PHP
PHP图片等比缩放类SimpleImage使用方法和使用实例分享
Apr 10 PHP
PHP面向对象程序设计之类常量用法实例
Aug 20 PHP
Win7下手动安装apache2.2、php5.4笔记
Apr 03 PHP
PHP中preg_match正则匹配中的/u、/i、/s含义
Apr 17 PHP
php实现统计网站在线人数的方法
May 12 PHP
php版微信公众平台实现预约提交后发送email的方法
Sep 26 PHP
PHP正则匹配日期和时间(时间戳转换)的实例代码
Dec 14 PHP
laravel5使用freetds连接sql server的方法
Dec 07 PHP
PHP+redis实现微博的拉模型案例详解
Jul 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
PHP 八种基本的数据类型小结
2011/06/01 PHP
WordPress中Gravatar头像缓存到本地及相关优化的技巧
2015/12/19 PHP
php实现带读写分离功能的MySQL类完整实例
2016/07/28 PHP
PHP写的简单数字验证码实例
2017/05/23 PHP
PHP让网站移动访问更加友好方法
2019/02/14 PHP
javascript里的条件判断
2007/02/27 Javascript
js 设置选中行的样式的实现代码
2010/05/24 Javascript
Firefox中使用outerHTML的2种解决方法
2014/06/07 Javascript
JS实现一个列表中包含上移下移删除等功能
2014/09/24 Javascript
jQuery实现动态添加和删除一个div
2015/08/12 Javascript
纯JS实现轮播图
2017/02/22 Javascript
原生js实现可拖拽效果
2017/02/28 Javascript
微信小程序开发之数据存储 参数传递 数据缓存
2017/04/13 Javascript
mui开发中获取单选按钮、复选框的值(实例讲解)
2017/07/24 Javascript
十个免费的web前端开发工具详细整理
2017/09/18 Javascript
layui-tree实现Ajax异步请求后动态添加节点的方法
2019/09/23 Javascript
通过实例解析chrome如何在mac环境中安装vue-devtools插件
2020/07/10 Javascript
vue 公共列表选择组件,引用Vant-UI的样式方式
2020/11/02 Javascript
[01:32]2016国际邀请赛中国区预选赛IG战队首日赛后采访
2016/06/27 DOTA
[38:42]完美世界DOTA2联赛循环赛 Matador vs Forest BO2第二场 11.05
2020/11/05 DOTA
使用Python对微信好友进行数据分析
2018/06/27 Python
python抓取京东小米8手机配置信息
2018/11/13 Python
django认证系统实现自定义权限管理的方法
2019/08/28 Python
Python argparse模块应用实例解析
2019/11/15 Python
Python生态圈图像格式转换问题(推荐)
2019/12/02 Python
tensorflow模型保存、加载之变量重命名实例
2020/01/21 Python
pycharm新建Vue项目的方法步骤(图文)
2020/03/04 Python
python 写函数在一定条件下需要调用自身时的写法说明
2020/06/01 Python
浅析几个CSS3常用功能的写法
2014/06/05 HTML / CSS
Android interview questions
2016/12/25 面试题
触摸春天教学反思
2014/02/03 职场文书
医学专业大学生职业生涯规划书
2014/10/25 职场文书
八月一日观后感
2015/06/10 职场文书
小学大队长竞选稿
2015/11/20 职场文书
java版 联机五子棋游戏
2022/05/04 Java/Android
Redis实现短信验证码登录的示例代码
2022/06/14 Redis