我有一个嵌套的邮件'我所在的yii2(基本模板)中的模块:
@应用程序/模块/管理/模块/邮件
如何在所有模块文件中创建更短的命名空间。因此,不是在我的控制器文件中使用此命名空间:
命名空间app \ modules \ admin \ modules \ mail \ controllers;
我可以:
命名空间邮件/控制器;
如果我移动模块文件夹,我不必去手动更改每个文件中的命名空间(也就是说它们只是很长)。
文档实际上会在此处http://www.yiiframework.com/doc-2.0/guide-structure-modules.html#nested-modules推荐这里,它会说" 你应该考虑在这里使用更短的命名空间!"
但是你怎么做到这一点?
答案 0 :(得分:1)
您必须在bootstrap中将目录别名设置为自定义命名空间。
首先,在bootstrap.php
文件夹中创建config/
:
//bootstrap.php
Yii::setAlias('mail', dirname(dirname(__DIR__)) . '/modules/admin/modules/mail');
在初始应用程序中添加运行bootstrap.php
。
修改文件web/index.php
,在需要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();
现在,您可以为邮件模块中的控制器设置名称空间为mail/controllers
。
希望它有所帮助。