2016-01-22 168 views
2

我仍在开发中,我现在不想在我的Yii2中使用干净的URL。Yii2 Bootstrap导航栏的标签URL没有干净URL

我下面的代码添加到高级Yii2项目导航栏About使下关于子菜单:/?r=invoices从客户端的地址栏:

[ 
    'label' => 'About', 
    'url' => ['/site/about'], 
    'items' => [ 
     ['label' => 'Invoices', 'url' => 'invoices/index'], 
    ] 
], 

通常情况下,invoices控制器被访问。但是,上面的代码生成/invoices/index,它给出Page not found error,因为我还没有启用干净的URL。

我的问题是,如何在不启用干净URL的情况下添加可访问的新菜单项,并保持启用干净URL后的代码?

回答

4

url参数值由\yii\helpers\Url::to()方法处理:

  • false(默认值):产生相对URL。
  • true:返回一个绝对的基础URL,其方案与\yii\web\UrlManager::hostInfo中的方案相同。
  • 字符串:使用指定方案(httphttps)生成绝对URL。

所以,如果你传递一个字符串url参数,它将被视为绝对URL。为了给定路线建立的网址,你需要传递数组,那么它将被\yii\helpers\Url::toRoute()处理:

'url' => ['invoices/index'], 

它会考虑UrlManager设置,如$enablePrettyUrl