我有汽车的名称测试数据库表像下父母 - 孩子 - 大子类标记在笨视图
我用我的模型递归函数来获取数据阵列和倾销它。它看起来完美如一以下
Array
(
[menu] => Array
(
[0] => Array
(
[id] => 1
[name] => Automobiles
[parent] => 0
[child] => Array
(
[0] => Array
(
[id] => 2
[name] => Honda
[parent] => 1
[child] => Array
(
[0] => Array
(
[id] => 3
[name] => Cars
[parent] => 2
[child] => Array
(
[0] => Array
(
[id] => 4
[name] => Civic
[parent] => 3
[child] => Array
(
[0] => Array
(
[id] => 5
[name] => Prosmetic
[parent] => 4
)
)
)
)
)
)
)
在我看来,我创建一个标准的引导multi-level dropdown,但我没有得到所有子菜单
问题:我没有让所有的孩子
我相信我找到了我的视图代码中的原因。以下是代码片段这使得下拉
<div class="dropdown">
<button class="btn btn-default dropdown-toggle" type="button" data-toggle="dropdown">Menu<span class="caret"></span></button>
<ul class="dropdown-menu">
<?php for($i=0;$i<count($menu);$i++){?>
<?php if(!empty($menu[$i]['child'])){?>
<li class="dropdown-submenu">
<a class="test" href="#"><?php echo $menu[$i]['name']?> <span class="caret"></span></a>
<ul class="dropdown-menu">
<?php for($j=0;$j<count($menu[$i]['child']);$j++){?>
<li><a href="#"><?php echo $menu[$i]['child'][$j]['name']?></a></li>
<?php }?>
</ul>
</li>
<?php }else{?>
<li><a tabindex="-1" href="#"><?php echo $menu[$i]['name']?></a></li>
<?php }}?>
</ul>
</div>
我只能够得到第一级的孩子,因为我只检查第一级子。我如何在视图中重复执行(递归)。我不能只是继续检查孩子的子女等等。必须有一种方法。任何人都可以指点我正确的方向吗?
编辑:我的模型
function getCategoriesByParentId($category_id) {
$data = $this->db->select('*')->from('autos')->WHERE('parent',$category_id)->get()->result_array();
for($i=0;$i<count($data);$i++)
{
if($this->getCategoriesByParentId($data[$i]['id']))
{
$data[$i]['child']=$this->getCategoriesByParentId($data[$i]['id']);
}
}
return $data;
}
我的控制器
public function index()
{
$this->load->model('Test_model');
$data['menu']=$this->Test_model->getCategoriesByParentId(0);
//echo '<pre>';print_r(($data));echo '</pre>';exit;
$data['title']='testing';
$this->load->view('head',$data);
$this->load->view('dropdown');
}
我插入一些类别和子类别。此时画面看起来像这样
将$ menu的输出添加为代码不在图片中 –
图片已移除。输出代码格式。 –
我没有测试,但有一看功能 功能arrayToMenu($阵列) \t { \t $出来= '
'; \t的foreach($数组作为$键=> $ ELEM) \t { \t $出来。= '- '。$ ELEM [ '名'。(!空($ ELEM [ '孩子'])?arrayToMenu( $ elem ['child']):'')。''
'; \t} \t return $ out。'
'; \t} – Snm