Yii2: как создать собственную namespace папку в корне проекта

Yii2: как создать собственную namespace папку в корне проекта

· Yii2 и Снипеты · 1 мин чтения

Казалось бы, все лишь нужно создать папку в корне и указать верный namespace и все должно начать работать как по взмаху волшебной палочки. Но не все так просто и сейчас я объясню почему.

Если вы сделаете так как я написал выше, то namespace не будет поддерживаться — будет выводиться ошибки о несуществующем классе.

Задача

Сейчас я опишу пример из advanced, но так же покажу как это сделать в basic.

Основная задача — это создать папку, например, modules внутри корневой директории, где лежать такие папки как /backend, /console, /frontend.

Ниже вы можете посмотреть как этого добиться.

В Yii2 advanced

В common/config/bootstrap.php по умолчанию вы должны найти следующее:

<?php
Yii::setAlias('@common', dirname(__DIR__));
Yii::setAlias('@frontend', dirname(dirname(__DIR__)) . '/frontend');
Yii::setAlias('@backend', dirname(dirname(__DIR__)) . '/backend');
Yii::setAlias('@console', dirname(dirname(__DIR__)) . '/console');

Теперь, если вы хотите создать собственную папку в корне, где будут лежать классы и прочее, то ваш нужно добавить новый псевдоним и готово, пример:

Yii::setAlias('@modules', dirname(dirname(__DIR__)) . '/modules');

Где @modules — это новый псевдоним, который мы можем использовать, а /modules — это путь для папки.

В Yii2 basic

В basic чуть-чуть по другому, но логика, в целом остается точно такой же. Вам нужно зайти в config/web.php:

...
'aliases' => [
   '@bower' => '@vendor/bower-asset',
   '@npm'   => '@vendor/npm-asset',
   '@modules' => dirname(dirname(__DIR__)) . '/modules'
],
'components' => [
...

И добавить новое значение в aliases.

Yii псевдонимы

Для более дательного понимая логики псевдонимов, вы можете обратиться к официальному гайду, где подробно описывается где и как они могут использоваться. Лучше чем там, вам никто не расскажет.