Yii动态菜单创建jquery移动

时间:2013-07-31 13:22:03

标签: jquery-mobile yii

我已经建立了一个JQuery Mobile网站,现在我正在使用Yii Framework创建一个CMS。

我有一个用于菜单创建的数据库表设置,该表设置链接到另一个页面内容表。

菜单表包含: ID,标题,父级,可折叠(可折叠是一个复选框,用于确定是否为该给定菜单项创建页面,因为我不希望可折叠项目可点击,如下面的jsFiddle所示)

jsfiddle.net/gn7q6 /

从上面的jsFiddle可以看到我希望菜单如何运作。

我只是不确定如何以这种方式创建动态菜单。

1 个答案:

答案 0 :(得分:0)

我假设您已经为MenuTable设置了模型菜单,并且已经定义了关系

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

获取顶级父菜单

// the parent menu would not have parent menu id (0, empty or IS NULL, my case was using comapare with 0 as default FK column value)
$topMenus = Menu::model()->findAllByAttributes(array('parent_id' => '0'));

渲染菜单

<ul data-role="listview" data-inset="true">
<?php 
$render = "";
echo renderMenuItems(topMenus, &$render);
}?>
</ul>

处理递归n子菜单渲染的函数

<?php 
function renderMenuItems($parentItem, &$render){
        if(count($parentItem->childMenuItems) > 0){
            $render .= '<li class="custom-li">
                    <div data-role="collapsible" class="custom-collapsible2" data-iconpos="right">
                        <h3><?php echo $parentItem->title ?></h3>
                        <ul data-role="listview">';
                        foreach($parentItem->childMenuItems as $item){
                            $render .= renderMenuItems($parentItem,$render);
                        }

            $render .= '</ul>
                    </div>
                </li>';         
        }
        else{
            $render .= '<li><a href="<?php echo $menu->actionUrl ?>"><?php echo $menu->title ?></a></li>';
        }
        return $render;
    }
    ?>

我还没有调试它,但想法是一样的。不仅仅是这个菜单,如果在子级别菜单上重复布局结构,许多其他菜单的逻辑几乎相同