1)我的Yii2在 subfilder 中,所以我的所有链接都从Yii /开始,如 http:/ localhost / Yii / settings / usertype-activitytype / type / 3
2)请求组件配置
'request' => [
'cookieValidationKey' => 'somecookiekey',
'baseUrl' => '/Yii',
],
3)尝试构建菜单,当前路由是 http:/ localhost / Yii / settings / usertype-activitytype / type / 1 1是路由中的id,我应该指定当前路由为Yii :: $ app->请求 - >导航窗口小部件的路径信息
尝试1 - 没有支撑作为字符串 找不到活动元素
Nav::widget([
'items' => array_map(function($userType) {
return [
'label' => $userType->name,
'url' => Url::current(['id' => $userType->id]),
];
}, $userTypes),
'route' => Yii::$app->request->pathInfo,
'options' => ['class' =>'nav-pills'],
]);
尝试2 - 使用支撑作为路线 NOT FIND ACTIVE ELEMENT
Nav::widget([
'items' => array_map(function($userType) {
return [
'label' => $userType->name,
'url' => [Url::current(['id' => $userType->id])]
];
}, $userTypes),
'route' => Yii::$app->request->pathInfo,
'options' => ['class' =>'nav-pills'],
]);
尝试3 - 从生成的路线中移除baseUrl 找到活动元素!!!
Nav::widget([
'items' => array_map(function($userType) {
return [
'label' => $userType->name,
'url' => [str_replace('Yii/', '', Url::current(['id' => $userType->id]))]
];
}, $userTypes),
'route' => Yii::$app->request->pathInfo,
'options' => ['class' =>'nav-pills'],
]);
所以你应该注意到我必须使用脏黑客来强制Nav使用生成的Url ,这看起来非常不合适。
问题是 - 是否有办法强制NAV小部件识别当前活动项 ?
答案 0 :(得分:0)
如果您希望根据您的参数构建网址,则应使用Url::to()
作为
'url' => Url::to(your-controller/your-view', ['id' => $userType->id]),
所以访问控制器type
usertype-activitytype
'url' => Url::to('usertype-activitytype/type', ['id' => $userType->id]),
current使用当前路由和GET参数创建URL。
并记住
按设计UrlManager始终将基本URL添加到生成的URL中。 默认情况下,基本URL是根据条目的位置确定的 脚本。如果要自定义此选项,则应配置 UrlManager的baseUrl属性。
期待您的评论,网址形成正确..那么如果您需要http:/ localhost / Yii而不是Yii,那么您可以: