坏导航::菜单中的小部件编码,如何解决它


Bad Nav::widget encoding in menu, how to solve it?

在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()