Yii2:菜单无法打开网址

问题描述 投票:0回答:2

我正在使用Yii2 Menu widget。这是我的菜单

echo Menu::widget([
    'items' => [
        'label' => 'Products',
        'url' => '/products' // Not working.
        'items' => [
            [
                'label' => 'New Products',
                'url' => '/new-products'
            ]
        ]
    ]
]);

但是当用户单击Products时,URL /products不起作用,那么菜单必须打开(它可以工作)并且还打开URL /products(它不起作用)。

menu yii2
2个回答
1
投票

指定菜单项的URL时,即使使用默认操作,也必须以controller/action的形式指定它们,而不仅仅是/controller

在注释的第一个示例代码中,这是在类引用Note中作为yii-widgets-menu写在顶部。

因此,将Products项目的网址更改为

'url' => '/products/index'

还有new-products

'url' => '/products/new-products'

希望能帮助到你。

注意:当您指定/controller/action之类的网址时,它会将其添加到baseUrl或域名,之后删除所有内容。比如,如果你有域名http://example.com,你在页面http://example.com/contact-us。它将替换域名后的所有内容并添加指定的http://example.com/controller/action,如果提供的菜单项URL如controller/action,则单击它会将其附加到现有URL http://example.com/contact-us/controller/action


1
投票

您不能指望单击“产品”项目将打开子菜单并重定向到/products页面。它没有任何意义,因为在您有机会点击子菜单中的某些内容之前,您将被重定向到不同的页面。这就是点击“产品”只显示子菜单下拉列表的原因。但这个链接确实有效 - 尝试使用鼠标中键或在浏览器中禁用javascript。

在您的情况下,您应该将菜单定义为:

echo Menu::widget([
    'items' => [
        'label' => 'Products',
        'url' => '/products'
        'items' => [
            [
                'label' => 'All Products',
                'url' => '/products'
            ],
            [
                'label' => 'New Products',
                'url' => '/new-products'
            ],
        ]
    ]
]);

所有导航链接都应位于子菜单中。

© www.soinside.com 2019 - 2024. All rights reserved.