Я пытаюсь установить 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');