我的 yii2(基本模板)中有一个嵌套的“邮件”模块:
@app/modules/admin/modules/mail
如何在所有模块文件中创建更短的命名空间。因此,而不是我的 Controller 文件中的这个命名空间:
namespace app\modules\admin\modules\mail\controllers;
我可以有:
namespace mail/controllers;
如果我移动了模块文件夹,我就不必去手动更改每个文件中的命名空间(它们也很长)。
文档实际上在这里推荐这个 http://www.yiiframework.com/doc-2.0/guide-structure-modules.html#nested-modules它说“ 你应该考虑在这里使用更短的命名空间!”
但是你如何做到这一点呢?
最佳答案
您必须在引导时将别名设置为目录到自定义命名空间。
首先,创建一个bootstrap.php
在 config/
文件夹:
//bootstrap.php
Yii::setAlias('mail', dirname(dirname(__DIR__)) . '/modules/admin/modules/mail');
添加运行
bootstrap.php
在初始化应用程序。编辑文件
web/index.php
, 在 require Yii.php
后面添加这一行require(__DIR__ . '/../vendor/autoload.php');
require(__DIR__ . '/../vendor/yiisoft/yii2/Yii.php');
//Add after require Yii.php
require(__DIR__ . '/../config/bootstrap.php');
$config = require(__DIR__ . '/../config/web.php');
(new yii\web\Application($config))->run();
现在您可以在邮件模块中为 Controller 设置命名空间
mail/controllers
.希望有帮助。
关于module - Yii2 自定义/较短的命名空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40033580/