Можно ли задать другую папку и другой namespace для контроллеров?
У меня контроллеры должны распологаться так
root
|
-- src
| |
| -- presentation
| |
| --- controllers
| |
| -- public
| SiteController.php
| -- directory
| SomeController.php
|
-- migrations
-- vendor
-- ...
Как можно сделать так, чтобы в контроллерах и вообще в классах папки src использовать неймспейс например presentation/controllers/public/presentation/controllers/directory без указания src и app в пути И при этом чтобы приложение знало, что они именно в src?
Если в конфиге прописать 'controllerNamespace' => 'app\src\presentation\controllers', а в контроллерах namespace app\src\presentation\controllers\public; всё работает. Но мне не нравится это app\src и src.
Если добавлять 'controllerPath' => 'app\src\presentation\controllers', - то это не работает. Я вообще не знаю зачем оно нужно, потому что оно, как я понял, давно readOnly.
Ответы (1 шт):
Скорее всего это можно сделать через назначение autoload в composer (https://getcomposer.org/doc/04-schema.md#autoload)
Получится примерно так:
{
"autoload": {
"psr-4": {
"app\\presentation\\controllers\\": "/src",
}
}
}
Тогда можно использовать namespace app\presentation\controllers
А можно в конфиге дописать basePath:
'basePath' => dirname(__DIR__) . '/src',
и оставить 'controllerNamespace' => 'app\presentation\controllers',
и тоже будет необходимый namespace app\presentation\controllers