我正在尝试在我的应用程序中查看动态菜单。我制定了我的政策,我将有一张桌子,我会自己将菜单项添加到表中。我有一张Menu_Panel
这样的表格:
id menu_name parent_menu_id
1 root 0
4 user 1
5 sales 1
6 user-list 2
对于嵌套项目,我进行了查询,然后执行了输出如下的查询:
Array
(
[1] => Array
(
[id] => 1
[menu_name] => root
[parent_menu_id] => 0
[sub-menu] => Array
(
[4] => Array
(
[id] => 4
[menu_name] => user
[parent_menu_id] => 1
[sub-menu] => Array
(
[6] => Array
(
[id] => 6
[menu_name] => user-list
[parent_menu_id] => 2
)
)
)
[5] => Array
(
[id] => 5
[menu_name] => Sales
[parent_menu_id] => 1
)
)
)
)
现在我想,我得到了我想要的结果,因为它看起来像嵌套的。现在我想在我的视图页面中显示 ul->li 中的递归菜单项。这是我的代码:我将结果保存到$side_bar_menu
::
@foreach($side_bar_menu as $module)
<li class="mm-dropdown">
<a href="#"><i class="menu-icon fa fa-columns"></i><span class="mm-text">User </span></a>
<ul>
@foreach($module['sub-menu'] as $sub_module)
<li>
<a tabindex="-1" href="{{route('menu-panel')}}"><span class="mm-text">Menu Panel</span></a>
</li>
@endforeach
</ul>
</li>
@endforeach
我想我错过了一些东西。 在这种情况下,$module['sub-menu']
不起作用。正如我注意到数组索引号不是连续的。
我的问题是,如何在 php 中查看视图中的项目列表?
我认为你可以从根级别使用foreach
。以下是您可以尝试的视图代码:
@if($side_bar_menu)
<?php //print_r($side_bar_menu); exit(); ?>
@foreach($side_bar_menu as $module)
@foreach($module['sub-menu'] as $sub_module)
<?php // print_r($sub_module['menu_name']); ?>
<li class="mm-dropdown">
<a tabindex="-1" href="{{route('menu-panel')}}"><span class="mm-text">{{$sub_module['menu_name']}}</span></a>
<ul>
@foreach($sub_module['sub-menu'] as $sub_sub_module)
<?php // print_r($sub_sub_module['menu_name']); ?>
<li>
<a tabindex="-1" href="{{route('menu-panel')}}"><span class="mm-text">{{$sub_sub_module['menu_name']}}</span></a>
</li>
@endforeach
</ul>
</li>
@endforeach
@endforeach
我希望这会奏效。如果您有任何问题,请告诉我。
一看,它看起来像您试图将顺序数组视为关联数组。但是,我不熟悉您使用的蛋糕/拉拉维尔标记。 在原版PHP中,你会这样对待它:
foreach ($module as $moduleIndex => $menuModule) {
// Do top level stuff here using $menuModule
$subMenu = $menuModule['sub-menu'];
foreach ($subMenu as $smIndex => $subItem) {
// Do submenu stuff here using $subItem
renderSubmenuItems($subItem);
}
}
不确定这是否有帮助,但请查看处理关联数组与顺序数组。希望你能找到你的问题。