#module #namespaces #yii2
#модуль #пространства имен #yii2
Вопрос:
У меня есть вложенный модуль ‘mail’ в моем yii2 (базовый шаблон) в этом месте:
@app/modules/admin/modules/mail
Как мне создать более короткие пространства имен во всех файлах модулей. Поэтому вместо этого пространства имен в моих файлах контроллера:
пространство имен app modulesadminmodulesmail controllers;
Я мог бы просто:
почта пространства имен / контроллеры;
Если я когда-нибудь перемещу папку модуля, мне не придется идти и вручную изменять пространство имен в каждом отдельном файле (также они просто длинные).
Документы на самом деле рекомендуют это здесь http://www.yiiframework.com/doc-2.0/guide-structure-modules.html#nested-modules где говорится: «Вам следует рассмотреть возможность использования здесь более короткого пространства имен!»
Но как вы этого добиваетесь?
Ответ №1:
вы должны установить псевдоним для каталога при начальной загрузке в пользовательское пространство имен.
Во-первых, создайте bootstrap.php
config/
папку in:
//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 yiiwebApplication($config))->run();
Теперь вы можете задать пространство имен для контроллеров в почтовом модуле mail/controllers
.
Надеюсь, это полезно.