修改一个高级应用模板
默认情况下,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,为新的应用添加@apialias:
<?phpYii::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
