Yii2 Bootstrap 导航栏的标签 URL 没有清理 URL

Yii2 Bootstrap navbar's label URL without clean URL

我仍在开发中,我现在不想在我的 Yii2 中使用干净的 URL。

我在高级的Yii2项目导航栏About中添加了以下代码,在About下制作子菜单:

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

通常,invoices 控制器通过以下方式访问:/?r=invoices 从客户端的地址栏。但是,上面的代码生成了 /invoices/index,它给出了 Page not found error,因为我还没有启用干净的 URL。

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

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

  • false (default): generating a relative URL.
  • true: returning an absolute base URL whose scheme is the same as that in \yii\web\UrlManager::hostInfo.
  • string: generating an absolute URL with the specified scheme (either http or https).

因此,如果您将字符串传递给 url 参数,它将被视为绝对值 url。为了给给定的路由创建 url,你需要传递数组,然后它将被 \yii\helpers\Url::toRoute():

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

它会考虑UrlManager settings, such as $enablePrettyUrl