我有一個從數據庫中獲取標題動態生成的菜單。我通過添加一列p_id爲子頁面設置了相同的表格。我的代碼看起來像這樣。如何解決Codeigniter中的動態多重下拉菜單問題?
private $Section = array();
function _menu($root){
$this->db->select('id,title,p_id');
$this->db->Where('p_id',$root);
$this->db->Where('status','active');
$this->db->Where('type','page');
$this->db->order_by('sort');
$query = $this->db->get('pages');
foreach ($query->result() as $row)
{
$this->Section[] = '<ul>';
$this->Section[] = '<li>';
$this->Section[] = anchor('site/page/'.$row->id.'#cont_main',$row->title);
$this->_menu($row->id);
$this->Section[] = '</li>';
$this->Section[] = '</ul>';
}
$query->free_result();
return $this->Section;
}
//get menu tree
function MenuTree(){
return $this->_menu(0);
}
在上述_menu()如果資產淨值有兩個或兩個以上的孩子那麼它不顯示,因爲它填充源提供額外</ul> and <ul>
。源看起來像這樣
<ul>
<li><a href="#">menu 1</a>
<ul>
<li><a>menu 1 sub1</a></li>
</ul>
<ul>
<li><a>menu 1 sub2</a></li>
</ul>
</li>
而我假設得到:
<ul>
<li><a href="#">menu 1</a>
<ul>
<li><a>menu 1 sub1</a></li>
<li><a>menu 1 sub2</a></li>
</ul>
</li>
編輯 我照着子元素添加菜單。圖像進入所有沒有孩子的菜單,因爲額外的<ul></ul>
如果我在循環之前使用ul。源代碼看起來像這樣。
<ul>
<li><a href="#">menu 1</a>
<ul>
<li><a>menu 1 sub1</a>
<ul></ul>
</li>
<li><a>menu 1 sub2</a></li>
</ul>
</li>
任何想法將是明顯的。
你爲什麼使用MVC框架? – jondavidjohn 2011-01-09 22:04:30