Пользовательское / более короткое пространство имен Yii2

#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 .

Надеюсь, это полезно.