菜单中的Bad Nav :: widget编码,如何解决?

时间:2015-04-05 22:29:14

标签: php yii menu yii2 nav

在Nav :: widget中,我编写了新的菜单项:

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

一切都好,我看到菜单中的链接。在菜单上悬停我在firefox中看到了很好的网址:

  

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

当我clik时,它会将我重定向到

  

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

我看到404错误。如果我将%2F和其他符号更改为斜杠,'&'和' =' - 这个网址正在工作。

我用utf-8编码保存菜单文件,为什么我看到带有%2F和其他符号的网址?怎么解决呢?

2 个答案:

答案 0 :(得分:1)

这是因为%2F%26%3D分别是/&=的urlencoded字符。这是因为您将生成Url作为字符串。 Yii默认情况下Url会在url属性中对字符串进行编码。你需要使用这样的东西来使它工作

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

答案 1 :(得分:1)

您正在构建错误的网址。不需要像这样连接参数。

url将由Url::to()处理,因此请将代码更改为:

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

官方文档: