【发布时间】:2014-04-30 19:47:08
【问题描述】:
我尝试在这个问题上实现@Tomas 答案 > PHP foreach create menu from array
我在下面有模型:
<?php
class Menu_model extends CI_Model{
function __construct(){
parent::__construct();
$this->load->database();
}
function getCategory($lang){
$sql = "SELECT * FROM category WHERE category.lang='".mysql_real_escape_string($lang)."'";
$result = $this->db->query($sql);
return $result;
}
function getSubCategory($lang){
$sql = "SELECT * FROM subcategory WHERE subcategory.lang='".mysql_real_escape_string($lang)."'";
$result = $this->db->query($sql);
return $result;
}
}
?>
然后我用这个Controller来扔数据:
<?php
$_SESSION['lang'] = 'EN';
class Home extends CI_Controller {
function __construct(){
parent::__construct();
$this->load->database();
$this->load->model("menu_model");
}
public function index()
{
$data["category"] = $this->menu_model->getCategory($_SESSION['lang']);
$data["subcategory"] = $this->menu_model->getSubCategory($_SESSION['lang']);
$this->load->view('leftmenu_view',$data);//Left Menu
}
}
这是我显示菜单的视图:
<?php
foreach($category->result() as $menu){
echo "<li><a class=\"sf-with-ul\" href=\"category/".$menu->urlcategory."\">".$menu->namecategory."</a></li>";
foreach($subcategory->result() as $key=>$submenu){
if ($menu->idcategory == $submenu->idcategory){
if ($key > 0){
echo "</li>";
}
echo "<ul class=\"sub-menu\"><a href=\"category/".$submenu->urlsubcategory."\">".$submenu->namesubcategory."</a><li>";
}
}
}
?>
单个菜单在循环上效果很好,但是当菜单有子菜单时,循环在结构上变得错误。
ul
li-a--Single Menu--/a-/li ->Have no SubMenu, Works Good
li-a--Single Menu--/a-/li ->Have no SubMenu, Works Good
li-a--Single Menu--/a-/li ->Have SubMenu, False Structure
ul-class=submenu
a-Sub Menu-/a
li--/li
ul-class=submenu
a-Sub Menu-/a
li--/li
/ul
ul
菜单结构应该是这样的:
ul
li-a--Single Menu--/a-/li
li-a--Single Menu--/a-/li
li-a-Single Menu With Sub Menu-/a-/li
ul-class=submenu
li-a-Sub Menu-/a-/li
li-a-Sub Menu-/a-/li
li-a-Sub Menu-/a-/li
/ul
li-a--Single Menu--/a-/li
li-a--Single Menu--/a-/li
ul
【问题讨论】:
-
您是否将所有变量都转储出来以查看
$data["category"]中的内容?只需确保您的$menu->namesubcategory不能为 NULL -
嗨@JofryHS,我今天更新并编辑了我的脚本。我使用 $data["category"] 和 $data["subcategory"] 来抛出数据。是的,$data["category"] 不是 NULL。
-
@Tomas 的结构我认为是不同的......
标签: mysql codeigniter drop-down-menu submenu