@Vocler

Почему yii/helpers/Url::To криво генерирует URL во время тестирования?

Вывожу на страницу URL сгенерированный функцией yii/helpers/Url::To:

<?= Url::to(['user/index']) ?>

Если точка входа - обычный index.php (т.е. перехожу по адресу http://localhost/) то вижу правильный URL:
/user/index

Если же точка входа - тестовый index-test.php (адрес - http://localhost/index-test.php) то вижу следующее:
/index-test.php/index-test.php/user/index

Естественно при переходе по ссылке получаю 404 т.к. правильный адрес должен быть /index-test.php/user/index. В чем причина такого поведения?

UPD:Судя по всему баг появляется только если Url::To() используется в \yii\widgets\Menu::widget следующим образом

\yii\widgets\Menu::widget(
            [
                'options' => ['class' => 'sidebar-menu tree', 'data-widget'=> 'tree'],
                'items' => [
                    ['label' => Yii::t('app', 'Label'), 'options' => ['class' => 'header']],
                    [
                        'label' => 'Users',
                        'url' => [Url::to(['user/index'])],
                    ],
				]
			]


Самое интересное в том что если [Url::to(['user/index'])] заменить на Url::to(['user/index']) (т.е. убрать квадратные скобки по краям и передавать в url не массив с одной строкой, а просто одну строку) все работает корректно, хотя в доках сказано что нужно передавать именно массив.
  • Вопрос задан
  • 65 просмотров
Решения вопроса 1
slo_nik
@slo_nik Куратор тега Yii
Открываете консоль.
Вводите команду
php yii serve
В результате работы этой команды в консоли должны увидеть что-то подобное.
Server started on http://localhost:8080/
Document root is "/home/slonik/localhost/www/test.loc/yii2_test/web"
Quit the server with CTRL-C or COMMAND-C.

Переходите в браузере по адресу.
http://localhost:8080/index-test.php
В конфигурационных файлах ничего не меняете.
Получаете страницу без ошибки 404.
5d2f59996db25518154643.png

p.s.
В config/web.php
'urlManager'   => [
            'enablePrettyUrl' => true,
            'showScriptName'  => false,
            'rules'           => [
                ''                            => 'site/index',
                '<_a:(contact|about)>'        => 'site/<_a>',
                '<_a:(login|logout|sign-up)>' => 'users/<_a>',
                '<_c:[-\w]+>/<_a:[-\w]+>'     => '<_c>/<_a>',
                '<_c:[-\w]+>'                 => '<_c>/index',
                '<_a:(offline)>'              => 'offline/index',

            ],
        ],

В config/test.php
'urlManager' => [
            'showScriptName' => true,
        ],
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
Bezlimit Москва
от 100 000 до 130 000 руб.
Sky Way Capital Москва
от 100 000 до 150 000 руб.
19 авг. 2019, в 14:48
300 руб./за проект
19 авг. 2019, в 14:39
1800 руб./в час
19 авг. 2019, в 14:24
30000 руб./за проект