Установка псевдонимов в Yii2 в файле конфигурации приложения

Я пытаюсь установить alias в Yii2 но я получаю Invalid Parameter / Invalid path alias для приведенного ниже кода, который помещается в файл конфигурации приложения:

 'aliases' => [ // Set the editor language dir '@editor_lang_dir' => '@webroot/scripts/sceditor/languages/', ], 

Если я удалю @ это сработает.

Я заметил, что вы можете это сделать:

 Yii::setAlias('@foobar', '@foo/bar'); 

… но я бы предпочел установить его в файле конфигурации приложения. Разве это невозможно? Если да, то как?

В папке config создайте файл aliases.php . И поставьте это:

 Yii::setAlias('webroot', dirname(dirname(__DIR__)) . '/web'); Yii::setAlias('editor_lang_dir', '@webroot/scripts/sceditor/languages/'); 

В web папке в файле index.php put: require(__DIR__ . '/../config/aliases.php');

До:

(new yii\web\Application($config))->run();

Если запустить echo в файле вида:

echo Yii::getAlias('@editor_lang_dir');

Показать:

C:\OpenServer\domains\yii2_basic/web/scripts/sceditor/languages/

Основное применение Yii2

Чтобы установить внутри конфигурационного файла, напишите это внутри $ config array

 'aliases' => [ '@name1' => 'path/to/path1', '@name2' => 'path/to/path2', ], 

Ссылка: http://www.yiiframework.com/doc-2.0/guide-structure-applications.html

Но, как упоминалось здесь ,

Атрибут @yii определяется при включении файла Yii.php в сценарий ввода. Остальные псевдонимы определяются в конструкторе приложения при применении конфигурации приложения.

Если вам нужно использовать предопределенный псевдоним, напишите один компонент и свяжите его в config bootstrap array

 namespace app\components; use Yii; use yii\base\Component; class Aliases extends Component { public function init() { Yii::setAlias('@editor_lang_dir', Yii::getAlias('@webroot').'/scripts/sceditor/languages/'); } } 

и внутри файла конфигурации, добавьте 'app \ components \ Aliases' в bootstrap array

  'bootstrap' => [ 'log', 'app\components\Aliases', ], 

@webroot alias недоступен на данный момент, он определяется во время загрузки приложения:

https://github.com/yiisoft/yii2/blob/2.0.3/framework/web/Application.php#L60

Не нужно самостоятельно определять этот псевдоним, вы должны просто использовать другой:

 'aliases' => [ // Set the editor language dir '@editor_lang_dir' => '@app/web/scripts/sceditor/languages/', ], 

Чтобы улучшить ответ @ vitalik_74

вы можете поместить его в config / web.php вместо этого (если вы используете основное приложение yii, я не уверен в главном файле конфигурации в предварительной версии, но то же самое относится, просто поместите требование в основной файл конфигурации ), чтобы он сокращался до:

 require(__DIR__ . '/aliases.php');