module - Yii2 自定义/较短的命名空间

标签 module namespaces yii2

我的 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.phpconfig/文件夹:

//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/

相关文章:

php - 提供对 Yii2 中插入的最小数量的验证

mongodb - MongoDB 和 Yii2 中的子文档

python - 将变量分配给多个 argparse 属性

javascript - 作为 npm 模块安装并访问本地文件夹

php - 在框架内创建模块系统

python - Py2exe 在我拥有 dll 时提示缺少它们?

c# - 是否可以使用 C# 检查是否启用了硬件虚拟化?

c# - 如何在 C# 中定义 "anonymous namespace"?

gridview - Yii2 字段过滤器未显示在 GridView 上

python - 私有(private)和公共(public)包模块?