简体   繁体   English

如何使用Yii创建多级菜单

[英]How to create multi level menu using Yii

How do I do a query to the case of multi-level menus in yii? 如何查询yii中多级菜单的情况?

For example I have a table like this : 例如,我有一个这样的表:

在此输入图像描述

menu_name will follow parrent_id it has, so it will form a hierarchical menu menu_name将跟随它所具有的parrent_id ,因此它将形成一个分层菜单

在此输入图像描述

How do I use Yii DAO on my layout so that the output as html above 如何在我的布局上使用Yii DAO ,以便输出为上面的html

My Code : 我的代码:

<?php
Yii::import('zii.widgets.CMenu', true);

class ActiveMenu extends CMenu
{
    public function init(){

    $criteria = new CDbCriteria;
    $criteria->condition='published=:idpub AND menu_controller=:menu';
    $criteria->params=array(':idpub'=>1, ':menu'=>'#');

    $items = Menu::model()->findAll($criteria);

    echo "<ul id='yw1' class='nav'>";

        foreach ($items as $item)
        {
            echo "<li class='dropdown'>
                    <a href=".$item->menu_controller." data-toggle='dropdown' class='dropdown-toggle'>
                    <i class='icon-white icon-list'></i>".$item->menu_name."<b class='caret'></b></a>
                </li>";
        }

        echo "</ul>";

        parent::init();
    }
}

But in the above code I only get parents data . 但在上面的代码中我只得到parents data How do I want to loop to get the childs data include in every parents menu like this html code : 我如何循环以获取子项childs data包含在每个父项菜单中,如此HTML代码:

<ul id="yw1" class="nav">
    <li><a href="/app/home.html"><span class="icon-white icon-tasks"></span> Home</a></li>

    <li class="dropdown">
        <a href="#" data-toggle="dropdown" class="dropdown-toggle">
        <i class="icon-white icon-list"></i>Master<b class="caret"></b></a>
        <ul class="dropdown-menu">
            <li><a href="expedition"><span class="icon-bar icon-list"></span> Expedition</a></li>
        </ul>
        <ul class="dropdown-menu">
            <li><a href="partner"><span class="icon-bar icon-list"></span> Partner</a></li>
        </ul>
        <ul class="dropdown-menu">
            <li><a href="user"><span class="icon-bar icon-list"></span> User</a></li>
        </ul>
    </li>

    <li class="dropdown">
        <a href="#" data-toggle="dropdown" class="dropdown-toggle">
        <i class="icon-white icon-list"></i>Transaction<b class="caret"></b></a>
        <ul class="dropdown-menu">
            <li><a href="processin"><span class="icon-bar icon-list"></span> Process In</a></li>
        </ul>
        <ul class="dropdown-menu">
            <li><a href="processout"><span class="icon-bar icon-list"></span> Process Out</a></li>
        </ul>
        etc ....
        etc ....
        etc ....
    </li>
</ul>

You should first have the relations set up properly in your Menu model (Menu.php). 您应首先在Menu模型(Menu.php)中正确设置关系。

public function relations()
    {
        return array(
            'parent' => array(self::BELONGS_TO, 'Menu', 'parent_id'),
            'children' => array(self::HAS_MANY, 'Menu', 'parent_id'),
        );
    }

And then modify the codes: 然后修改代码:

  //other codes

foreach ($items as $item)
{
    echo "<li class='dropdown'>
    <a href=".$item->menu_controller." data-toggle='dropdown' class='dropdown-toggle'>
    <i class='icon-white icon-list'></i>".$item->menu_name."<b class='caret'></b></a>
    </li>";
    foreach ($item->children as $child) {
        echo "<ul class='dropdown-menu'>
        <li><a href='".$child->menu_controller."'><span class='icon-bar icon-list'></span> ".$child->menu_name."</a></li></u>";
    }
}

  //other codes

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM