在Nav::widget中,我编写新的菜单项:
['label' => 'My profile', 'url' => ['/profile/professional&id='.$userlog->id]],
一切都好,我在菜单中看到了链接。在菜单悬停时,我在firefox:中看到了良好的url地址
/index.php?r=个人资料/专业&id=22
当我点击时,它会将我重定向到
/index.php?r=配置文件%2Fprofessional%26id%3D22
我看到404错误。如果我将%2F和其他符号更改为斜线,则'&'和"="-此url正在工作。
我用utf-8编码保存菜单文件,为什么我看到带有%2F和其他符号的url?如何解决?
这是因为%2F
、%26
和%3D
分别是/
、&
和=
的URL编码字符。这是因为您正在将Url生成为字符串。Yii默认情况下会在Url属性中对字符串进行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],
],
官方文件:
- 路由和URL创建
- Url::to()