修改一个高级应用模板
默认情况下,Yii2的高级模板有console
,frontend
和backend
应用。但是,在你的特殊情况下,你可以重命名已有的一个,创建你自己的应用。例如,如果你在为你的网站开发API,你可以添加api
应用。
准备
按照官方指南http://www.yiiframework.com/doc-2.0/guide-start-installation.html的描述,使用Composer包管理器创建一个新的yii2-app-advanced
应用。
如何做…
- 在应用的根目录下,复制
backend
文件夹中的内容到一个新的api
文件夹中。 - 打开
api/config/main.php
文件,修改controllerNamespace
的值:
return [
'id' => 'app-manager',
'basePath' => dirname(__DIR__),
'controllerNamespace' => 'api\controllers',
// ....
]
- 打开
api/assets/AppAsset.php
和api/controllers/SiteController.php
,将命名空间从backend
修改为api
:
namespaces api\assets;
namespaces api\controllers;
- 打开
api/views/layouts/main.php
文件,找到如下行:
use backend\assets\AppAsset;
修改为:
use api\assets\AppAsset;
- 打开
common/config/bootstrap.php
,为新的应用添加@api
alias:
<?php
Yii::setAlias('@common', dirname(__DIR__));
Yii::setAlias('@frontend', dirname(dirname(__DIR__)) .'/frontend');
Yii::setAlias('@backend', dirname(dirname(__DIR__)) .'/backend');
Yii::setAlias('@console', dirname(dirname(__DIR__)) .'/console');
Yii::setAlias('@api', dirname(dirname(__DIR__)) . '/api');
- 打开
environments
目录,在dev
和prod
子文件夹中,拷贝backend
文件夹为api
。 - 打开
environments/index.php
文件,为api
应用添加如下行:
return [
'Development' => [
'path' => 'dev',
'setWritable' => [
'backend/runtime',
'backend/web/assets',
'frontend/runtime',
'frontend/web/assets',
'api/runtime',
'api/web/assets',
],
'setExecutable' => [
'yii',
'tests/codeception/bin/yii',
],
'setCookieValidationKey' => [
'backend/config/main-local.php',
'frontend/config/main-local.php',
'api/config/main-local.php',
],
],
'Production' => [
'path' => 'prod',
'setWritable' => [
'backend/runtime',
'backend/web/assets',
'frontend/runtime',
'frontend/web/assets',
'api/runtime',
'api/web/assets',
],
'setExecutable' => [
'yii',
],
'setCookieValidationKey' => [
'backend/config/main-local.php',
'frontend/config/main-local.php',
'api/config/main-local.php',
],
],
];
现在,你就有了console
、frontend
、backend
和api
应用。
工作原理…
高级应用模板,是一组带有自定义aliases的应用集合,例如@frontend
,@backend
,@common
,@console
,以及相对应的命名空间。而对于Basic
模板只有一个简单的@app
alias。
如果有需要,你可以很容易的添加、删除或者重命名这些应用(以及他们的aliases和命名空间)。
参考
欲了解更多关于应用目录结构使用的信息,参考https://github.com/yiisoft/yii2-app-advanced/tree/master/docs/guide