Алиасы без @

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
shuk08
Сообщения: 4
Зарегистрирован: 2014.12.10, 13:21

Алиасы без @

Сообщение shuk08 »

Добрый день!

Только начал изучать yii2. Возникла проблема.

Код: Выделить всё

$menuItems[] = [
                'label' => 'Administration',
                'url' => Yii::getAlias('@administration')
            ]; 
такой код не срабатывает. получаю Invalid Parameter – yii\base\InvalidParamException
убираю "@" и все работает. Но ведь в документации написано что алиасы должны работать только с "@".
В common/config/aliases среди прочих нашел строчку Yii::setAlias('administration', '/yiicomm/backend/web/'); так и должно быть?
Аватара пользователя
anton44eg
Сообщения: 2716
Зарегистрирован: 2012.01.25, 13:37
Откуда: Киев

Re: Алиасы без @

Сообщение anton44eg »

так алиасы - это пути в файловой системе а не url
shuk08
Сообщения: 4
Зарегистрирован: 2014.12.10, 13:21

Re: Алиасы без @

Сообщение shuk08 »

Я видео уроки смотрю http://www.youtube.com/channel/UCa1tffwPyK5k8IRDLsutViA. Там в таком виде ссылка представлена.

Кроме того в официальном гайде первой строкой написано " Aliases are used to represent file paths or URLs so that you don't have to hard-code absolute paths or URLs in your project."

Я понимаю, что ссылка сделана не верно. Но при этом вопрос об алиасах остается. Yii::getAlias('@administration') в частном случае так должна выглядеть, а не Yii::getAlias('administration') или я чего-то не понимаю?
zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: Алиасы без @

Сообщение zelenin »

anton44eg писал(а):так алиасы - это пути в файловой системе а не url
нет
zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: Алиасы без @

Сообщение zelenin »

shuk08 писал(а): В common/config/aliases среди прочих нашел строчку Yii::setAlias('administration', '/yiicomm/backend/web/'); так и должно быть?
у вас алиас - это путь к файловой системе, а не урл.
А урл дролжен быть в формате либо роута либо урла, т.е. формат, подходящий для Url::to:

Код: Выделить всё

     * // /index?r=site/index
     * echo Url::to(['site/index']);
     *
     * // /index?r=site/index&src=ref1#name
     * echo Url::to(['site/index', 'src' => 'ref1', '#' => 'name']);
     *
     * // the currently requested URL
     * echo Url::to();
     *
     * // /images/logo.gif
     * echo Url::to('@web/images/logo.gif');
     *
     * // images/logo.gif
     * echo Url::to('images/logo.gif');
     *
     * // http://www.example.com/images/logo.gif
     * echo Url::to('@web/images/logo.gif', true);
     *
     * // https://www.example.com/images/logo.gif
     * echo Url::to('@web/images/logo.gif', 'https');
Аватара пользователя
maleks
Сообщения: 1992
Зарегистрирован: 2012.12.26, 12:56

Re: Алиасы без @

Сообщение maleks »

zelenin писал(а): у вас алиас - это путь к файловой системе, а не урл.
у него Yii::setAlias('administration', '/yiicomm/backend/web/') , это же урл.
zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: Алиасы без @

Сообщение zelenin »

maleks писал(а):
zelenin писал(а): у вас алиас - это путь к файловой системе, а не урл.
у него Yii::setAlias('administration', '/yiicomm/backend/web/') , это же урл.
а, ну да. Вообще разницы между путем и урлом нет никакой в контексте алиасов.
zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: Алиасы без @

Сообщение zelenin »

shuk08 писал(а):Добрый день!

Только начал изучать yii2. Возникла проблема.

Код: Выделить всё

$menuItems[] = [
                'label' => 'Administration',
                'url' => Yii::getAlias('@administration')
            ];
такой код не срабатывает. получаю Invalid Parameter – yii\base\InvalidParamException
убираю "@" и все работает. Но ведь в документации написано что алиасы должны работать только с "@".
В common/config/aliases среди прочих нашел строчку Yii::setAlias('administration', '/yiicomm/backend/web/'); так и должно быть?
используйте роут, а не алиас
Maxxi
Сообщения: 29
Зарегистрирован: 2014.11.20, 22:39

Re: Алиасы без @

Сообщение Maxxi »

Только начал изучать yii2.
я тоже :)
shuk08 писал(а): Возникла проблема.

Код: Выделить всё

$menuItems[] = [
                'label' => 'Administration',
                'url' => Yii::getAlias('@administration')
            ]; 
такой код не срабатывает. получаю Invalid Parameter – yii\base\InvalidParamException
убираю "@" и все работает. Но ведь в документации написано что алиасы должны работать только с "@".
В common/config/aliases среди прочих нашел строчку Yii::setAlias('administration', '/yiicomm/backend/web/'); так и должно быть?
Почитал коммментаторов и ничего не понял.

Код: Выделить всё

Invalid Parameter – yii\base\InvalidParamException
означает, что такой алиас не найден.
setAlias сам добавляет @ в начало, если не указан.
getAlias нужно передавать алиас с @, иначе она вернет строку без изменений.

остается проверить, что правильно подключается common/config/aliases, ну и дебажить :)

Вообще, полезно смотреть в исходники самомог фреймворка. Там все хорошо документировано.
shuk08
Сообщения: 4
Зарегистрирован: 2014.12.10, 13:21

Re: Алиасы без @

Сообщение shuk08 »

остается проверить, что правильно подключается common/config/aliases, ну и дебажить :)
Получается нужно создать папку common/config/aliases и в ней файл aliases.php?
Или как-то иначе.
В документации есть все про Алиасы, но только не то где их объявлять. Или я не нашел.
zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: Алиасы без @

Сообщение zelenin »

shuk08 писал(а):
остается проверить, что правильно подключается common/config/aliases, ну и дебажить :)
Получается нужно создать папку common/config/aliases и в ней файл aliases.php?
Или как-то иначе.
В документации есть все про Алиасы, но только не то где их объявлять. Или я не нашел.
в bootstrap.php https://github.com/yiisoft/yii2/blob/ma ... tstrap.php
shuk08
Сообщения: 4
Зарегистрирован: 2014.12.10, 13:21

Re: Алиасы без @

Сообщение shuk08 »

zelenin писал(а):
shuk08 писал(а):
остается проверить, что правильно подключается common/config/aliases, ну и дебажить :)
Получается нужно создать папку common/config/aliases и в ней файл aliases.php?
Или как-то иначе.
В документации есть все про Алиасы, но только не то где их объявлять. Или я не нашел.
в bootstrap.php https://github.com/yiisoft/yii2/blob/ma ... tstrap.php
ага спасибо, можно еще aliases.php но не суть :)
Maxxi
Сообщения: 29
Зарегистрирован: 2014.11.20, 22:39

Re: Алиасы без @

Сообщение Maxxi »

объявлять имхо можно где угодно. хоть перед самим получением :)
zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: Алиасы без @

Сообщение zelenin »

shuk08 писал(а):
ага спасибо, можно еще aliases.php но не суть :)
можно назвать как угодно, но официально рекомендуется bootstrap.php. aliaes было в бете
Ответить