我有汽車的名稱測試數據庫表像下父母 - 孩子 - 大子類標記在笨視圖
我用我的模型遞歸函數來獲取數據陣列和傾銷它。它看起來完美如一以下
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