В 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 и другие символы? как это решить?
Это потому что %2F
, %26
а также %3D
являются urlencoded символов для /
, &
а также =
соответственно. Это потому, что вы генерируете URL в виде строки. Yii по умолчанию будет кодировать строки в атрибуте url. Вам нужно будет использовать что-то вроде этого, чтобы это работало
['label' => 'My profile','url' => [\Yii::$app->urlManager->createUrl(['/profile/professional','id'=>$userlog->id])]],
Вы неправильно строите URL. Нет необходимости объединять такие параметры.
url
будет обработан Url::to()
поэтому измените код на это:
[
'label' => 'My profile',
'url' => ['/profile/professional', 'id' => $userlog->id],
],
Официальные документы: