代码之家  ›  专栏  ›  技术社区  ›  Roby Sottini

yii2:菜单没有打开url

  •  0
  • Roby Sottini  · 技术社区  · 8 年前

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

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

    但是网址 /products 当用户单击产品时不起作用,则必须打开菜单(它起作用)并打开URL 产品 (它不起作用)。

    2 回复  |  直到 8 年前
        1
  •  1
  •   Muhammad Omer Aslam    8 年前

    为菜单项指定url时,必须指定它们 以 controller/action 不仅仅是 /controller 即使 使用默认操作。

    上面写着 Note 在类引用中 yii-widgets-menu 在第一个示例代码的注释下。

    所以请更改 Products 项目到

    'url' => '/products/index'

    也为了 new-products

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

    希望有帮助。

    注释 :当您指定如下URL时 /controller/action 它将把它添加到baseurl或域名中,删除之后的所有内容。 就像你有一个域名 http://example.com 你在页面上 http://example.com/contact-us . 它将替换域名后面的所有内容并添加您指定的 http://example.com/controller/action 如果提供的菜单项url如下 控制器/动作 然后单击它会将其附加到现有的url http://example.com/contact-us/controller/action .

        2
  •  1
  •   rob006    8 年前

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

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

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

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