修改一个高级应用模板

默认情况下,Yii2的高级模板有consolefrontendbackend应用。但是,在你的特殊情况下,你可以重命名已有的一个,创建你自己的应用。例如,如果你在为你的网站开发API,你可以添加api应用。

准备

按照官方指南http://www.yiiframework.com/doc-2.0/guide-start-installation.html的描述,使用Composer包管理器创建一个新的yii2-app-advanced应用。

如何做…

  1. 在应用的根目录下,复制backend文件夹中的内容到一个新的api文件夹中。
  2. 打开api/config/main.php文件,修改controllerNamespace的值:
  1. return [
  2. 'id' => 'app-manager',
  3. 'basePath' => dirname(__DIR__),
  4. 'controllerNamespace' => 'api\controllers',
  5. // ....
  6. ]
  1. 打开api/assets/AppAsset.phpapi/controllers/SiteController.php,将命名空间从backend修改为api
  1. namespaces api\assets;
  2. namespaces api\controllers;
  1. 打开api/views/layouts/main.php文件,找到如下行:
  1. use backend\assets\AppAsset;

修改为:

  1. use api\assets\AppAsset;
  1. 打开common/config/bootstrap.php,为新的应用添加@api alias:
  1. <?php
  2. Yii::setAlias('@common', dirname(__DIR__));
  3. Yii::setAlias('@frontend', dirname(dirname(__DIR__)) .'/frontend');
  4. Yii::setAlias('@backend', dirname(dirname(__DIR__)) .'/backend');
  5. Yii::setAlias('@console', dirname(dirname(__DIR__)) .'/console');
  6. Yii::setAlias('@api', dirname(dirname(__DIR__)) . '/api');
  1. 打开environments目录,在devprod子文件夹中,拷贝backend文件夹为api
  2. 打开environments/index.php文件,为api应用添加如下行:
  1. return [
  2. 'Development' => [
  3. 'path' => 'dev',
  4. 'setWritable' => [
  5. 'backend/runtime',
  6. 'backend/web/assets',
  7. 'frontend/runtime',
  8. 'frontend/web/assets',
  9. 'api/runtime',
  10. 'api/web/assets',
  11. ],
  12. 'setExecutable' => [
  13. 'yii',
  14. 'tests/codeception/bin/yii',
  15. ],
  16. 'setCookieValidationKey' => [
  17. 'backend/config/main-local.php',
  18. 'frontend/config/main-local.php',
  19. 'api/config/main-local.php',
  20. ],
  21. ],
  22. 'Production' => [
  23. 'path' => 'prod',
  24. 'setWritable' => [
  25. 'backend/runtime',
  26. 'backend/web/assets',
  27. 'frontend/runtime',
  28. 'frontend/web/assets',
  29. 'api/runtime',
  30. 'api/web/assets',
  31. ],
  32. 'setExecutable' => [
  33. 'yii',
  34. ],
  35. 'setCookieValidationKey' => [
  36. 'backend/config/main-local.php',
  37. 'frontend/config/main-local.php',
  38. 'api/config/main-local.php',
  39. ],
  40. ],
  41. ];

现在,你就有了consolefrontendbackendapi应用。

工作原理…

高级应用模板,是一组带有自定义aliases的应用集合,例如@frontend@backend@common@console,以及相对应的命名空间。而对于Basic模板只有一个简单的@app alias。

如果有需要,你可以很容易的添加、删除或者重命名这些应用(以及他们的aliases和命名空间)。

参考

欲了解更多关于应用目录结构使用的信息,参考https://github.com/yiisoft/yii2-app-advanced/tree/master/docs/guide