Плохая кодировка Nav :: виджетов в меню, как ее решить?

В Nav :: widget я пишу новый пункт меню:

['label' => 'My profile', 'url' => ['/profile/professional&id='.$userlog->id]],

Все хорошо, и я вижу ссылку в меню. В меню при наведении курсора я вижу хороший адрес URL в Firefox:

/index.php?r=profile/professional&ID = 22

Когда я кликаю, он перенаправляет меня на

/index.php?r=profile%2Fprofessional%26id%3D22

И я вижу ошибку 404. Если я изменю% 2F и другие символы на косые черты, ‘&’и’ = ‘- этот URL работает.

Я сохраняю файл меню с кодировкой utf-8, почему я вижу URL с% 2F и другие символы? как это решить?

3

Решение

Это потому что %2F, %26 а также %3D являются urlencoded символов для /, & а также = соответственно. Это потому, что вы генерируете URL в виде строки. Yii по умолчанию будет кодировать строки в атрибуте url. Вам нужно будет использовать что-то вроде этого, чтобы это работало

['label' => 'My profile','url' => [\Yii::$app->urlManager->createUrl(['/profile/professional','id'=>$userlog->id])]],
1

Другие решения

Вы неправильно строите URL. Нет необходимости объединять такие параметры.

url будет обработан Url::to() поэтому измените код на это:

[
'label' => 'My profile',
'url' => ['/profile/professional', 'id' => $userlog->id],
],

Официальные документы:

1

По вопросам рекламы [email protected]