没有不值得去解决的问题,也没有不值得去学习的技术!

在 Yii2 Starter Kit 的后台应用中,新建一套主题的流程

配置 view 应用组件的 [[yii\base\View::theme|theme]] 属性
1、新建目录:\backend\views\themes\default,指定包含主题资源(CSS, JS, images, 等等)的基准目录,如图1
新建目录:\backend\views\themes\default,指定包含主题资源(CSS, JS, images, 等等)的基准目录
图1
2、复制目录:\backend\views\ 下的所有文件(除去themes),如图2
复制目录:\backend\views\ 下的所有文件(除去themes)
图2
3、粘贴至目录:\backend\views\themes\default\ 下,已经复制成功,如图3
粘贴至目录:\backend\views\themes\default\ 下,已经复制成功
图3
4、配置 view 应用组件的 [[yii\base\View::theme|theme]] 属性,如图4


    'components' => [
        'view' => [
            'theme' => [
                'basePath' => '@app/views/themes/default',
                'baseUrl' => '@web/views/themes/default',
                'pathMap' => [
                    '@app/views' => '@app/views/themes/default',
                ],
            ],
        ],
    ],


配置 view 应用组件的 [[yii\base\View::theme|theme]] 属性
图4
5、配置 Gii 模板文件,其主题为:default,如图5


if (YII_ENV_DEV) {
    $config['modules']['gii'] = [
        'class' => yii\gii\Module::class,
        'generators' => [
            'crud' => [
                'class' => yii\gii\generators\crud\Generator::class,
                'templates' => [
                    'yii2-starter-kit' => Yii::getAlias('@backend/views/themes/default/_gii/templates')
                ],
                'template' => 'yii2-starter-kit',
                'messageCategory' => 'backend'
            ]
        ]
    ];
}


配置 Gii 模板文件,其主题为:default
图5
6、主题化模块,如:i18n ,新建目录:\backend\modules\i18n\views\themes\default,如图6
主题化模块,如:i18n ,新建目录:\backend\modules\i18n\views\themes\default
图6
7、复制目录:\backend\modules\i18n\views\ 下的所有文件(除去themes),如图7
复制目录:\backend\modules\i18n\views\ 下的所有文件(除去themes)
图7
8、粘贴至目录:\backend\modules\i18n\views\themes\default\ 下,已经复制成功,如图8
粘贴至目录:\backend\modules\i18n\views\themes\default\ 下,已经复制成功
图8
9、配置 view 应用组件的 [[yii\base\View::theme|theme]] 属性,如图9


        'view' => [
            'theme' => [
                'basePath' => '@app/views/themes/default',
                'baseUrl' => '@web/views/themes/default',
                'pathMap' => [
                    '@app/views' => '@app/views/themes/default',
                    '@app/modules/i18n/views' => '@app/modules/i18n/views/themes/default',
                ],
            ],
        ],


配置 view 应用组件的 [[yii\base\View::theme|theme]] 属性
图9
10、通过 [[yii\base\View::theme]] 属性访问 [[yii\base\Theme]] 对象。编辑:\backend\views\themes\default\sign-in\login.php,如图10


$theme = $this->theme;
print_r($theme);
exit;


通过 [[yii\base\View::theme]] 属性访问 [[yii\base\Theme]] 对象。编辑:\backend\views\themes\default\sign-in\login.php
图10
11、打印出的对象,如图11 yii\base\Theme Object ( [pathMap] => Array ( [@app/views] => @app/views/themes/default [@app/modules/i18n/views] => @app/modules/i18n/views/themes/default ) [_baseUrl:yii\base\Theme:private] => /views/themes/default [_basePath:yii\base\Theme:private] => E:\wwwroot\cmcp\backend/views/themes/default [_events:yii\base\Component:private] => Array ( ) [_behaviors:yii\base\Component:private] => )
打印出的对象
图11
12、在 .env 中设置主题名称:default,如图12


# Themes
# ----
BACKEND_THEME = default


在 .env 中设置主题名称:default
图12
13、设置主题相关别名,编辑:\backend\config\bootstrap.php,定义别名,如图13


/**
 * Setting theme aliases
 */
Yii::setAlias('@themePath', '@backend/web/themes/' . env('BACKEND_THEME'));
Yii::setAlias('@themeUrl', '@backendUrl/themes/' . env('BACKEND_THEME'));


设置主题相关别名,编辑:\backend\config\bootstrap.php,定义别名
图13
14、第5步骤的设置,调整,如图14


if (YII_ENV_DEV) {
    $config['modules']['gii'] = [
        'class' => yii\gii\Module::class,
        'generators' => [
            'crud' => [
                'class' => yii\gii\generators\crud\Generator::class,
                'templates' => [
                    'yii2-starter-kit' => Yii::getAlias('@backend/views/themes/' . env('BACKEND_THEME') . '/_gii/templates')
                ],
                'template' => 'yii2-starter-kit',
                'messageCategory' => 'backend'
            ]
        ]
    ];
}


第5步骤的设置,调整
图14
15、第9步骤的设置,调整,如图15


        'view' => [
            'theme' => [
                'basePath' => '@app/views/themes/' . env('BACKEND_THEME'),
                'baseUrl' => '@web/views/themes/' . env('BACKEND_THEME'),
                'pathMap' => [
                    '@app/views' => '@app/views/themes/' . env('BACKEND_THEME'),
                    '@app/modules/i18n/views' => '@app/modules/i18n/views/themes/' . env('BACKEND_THEME'),
                ],
            ],
        ],


第9步骤的设置,调整
图15
16、新建目录:\backend\web\themes\default,指定包含主题资源(CSS, JS, images, 等等)的基准目录,如图16
新建目录:\backend\web\themes\default,指定包含主题资源(CSS, JS, images, 等等)的基准目录
图16
17、复制目录:\backend\web\ 下的目录(css、img、js),如图17
复制目录:\backend\web\ 下的目录(css、img、js)
图17
18、粘贴至目录:\backend\web\themes\default\ 下,已经复制成功,如图18
粘贴至目录:\backend\web\themes\default\ 下,已经复制成功
图18
19、基于主题重新定义资源包,编辑:\backend\assets\BackendAsset.php,如图19


    public $basePath = '@themePath';
    public $baseUrl = '@themeUrl';


基于主题重新定义资源包,编辑:\backend\assets\BackendAsset.php
图19
20、查看登录页面的源代码,最大的变化在于包含的CSS/JS文件,其路径为绝对路径,如图20
查看登录页面的源代码,最大的变化在于包含的CSS/JS文件,其路径为绝对路径
图20

PHP / Laravel / Yii2 老项目维护与长期技术支持

如果你的 PHP / Laravel / Yii2 项目已经上线,但遇到原开发离职、Bug 长期无人修复、接口不稳定、性能下降、代码难以接手等问题,可以联系我做一次远程技术排查。

适合以下情况:
✅ 老旧 PHP 系统无人维护
✅ Laravel / Yii2 项目 Bug 修复
✅ 后台管理系统小功能迭代
✅ RESTful API 接口排查
✅ MySQL / Redis / Nginx 性能问题
✅ 长期远程兼职维护

可先从一次小问题开始:
✅ 线上报错排查
✅ 接口异常分析
✅ 慢查询与性能瓶颈定位
✅ 代码结构初步评估
✅ 部署环境与日志检查

如需咨询,请联系我,并注明:PHP 维护咨询

联系方式:
Telegram:@shuijingwan
微信:13980074657
邮箱:shuijingwanwq@gmail.com

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理