PHP Codeigniter中的动态菜单和子菜单
我正在尝试使用PHP Codeigniter创建动态菜单 有一些主菜单 每个主菜单都有一些子菜单,例如,类别->硬件、软件等 我不知怎么做了,但有一个问题,主菜单显示正确,但主菜单下的子菜单在每个主菜单中重复 这是问题的图像: 我的视图代码PHP Codeigniter中的动态菜单和子菜单,php,mysql,codeigniter-3,Php,Mysql,Codeigniter 3,我正在尝试使用PHP Codeigniter创建动态菜单 有一些主菜单 每个主菜单都有一些子菜单,例如,类别->硬件、软件等 我不知怎么做了,但有一个问题,主菜单显示正确,但主菜单下的子菜单在每个主菜单中重复 这是问题的图像: 我的视图代码 <ul class="slimmenu"> <?php foreach($menus as $menu): ?> <li> <a href="#"><?php ech
<ul class="slimmenu">
<?php foreach($menus as $menu): ?>
<li>
<a href="#"><?php echo $menu -> Menu_Name;?></a>
<ul>
<?php foreach($submenus as $submenu): ?>
<li>
<a href="#"><?php echo $submenu -> Sub_Menu_Name;?></a>
</li>
<?php endforeach;?>
</ul>
</li>
<?php endforeach;?>
</ul>
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
class MainSystem extends CI_Controller
{
function __construct() {
parent::__construct();
$this->load->model('menusys','ms');
}
function menu()
{
$this->data['menus'] = $this->ms->get_menu();
$this->data['submenus'] = $this->ms->get_submenu();
$this->load->view('index', $this->data);
}
function add_menu()
{
$data = array(
'Menu_Name' => $this->input->post('mname'),
'Menu_Link' => $this->input->post('mlink'),
);
$this->ms->adm($data);
}
function sub_menu()
{
$this->data['mmenu'] = $this->ms->get_menu();
$this->load->view('submenu', $this->data);
}
function add_submenu()
{
$data = array(
'Main_Menu_Name' => $this->input->post('mmname'),
'Sub_Menu_Name' => $this->input->post('mname'),
'Sub_Menu_Link' => $this->input->post('mlink'),
);
$this->ms->adsm($data);
}
}
?>
<?php
defined('BASEPATH') or exit('no direct script directy allowed');
/**
*
*/
class menusys extends CI_Model
{
public function __construct()
{
parent::__construct();
}
public function adm($data)
{
$this->db->set('Is_Active',0);
$this->db->insert('main_menu',$data);
$this->session->set_flashdata('msg', 'Meun has been added');
redirect('MainSystem/menu');
}
//sub-menu Section
public function get_menu()
{
//$this->db->where('Is_Active',1);
// $this->db->select('*');
// $this->db->from('main_menu');
// $this->db->join('sub_menu', 'main_menu.Menu_Name = sub_menu.Main_Menu_Name','inner');
// $query = $this->db->get();
// return $query->result();
//
$query=$this->db->get_where('main_menu',array('Is_Active'=>1));
return $query->result();
}
function get_submenu()
{
$this->db->where('main_menu.Menu_Name = sub_menu.Main_Menu_Name');
$this->db->select('*');
$this->db->from('sub_menu');
$this->db->join('main_menu', 'main_menu.Menu_Name = sub_menu.Main_Menu_Name','inner');
$query = $this->db->get();
return $query->result();
}
public function adsm($data)
{
$this->db->set('Is_Active',1);
$this->db->insert('sub_menu',$data);
$this->session->set_flashdata('msg', 'Meun has been added');
redirect('MainSystem/menu');
}
}
我的控制器代码
<ul class="slimmenu">
<?php foreach($menus as $menu): ?>
<li>
<a href="#"><?php echo $menu -> Menu_Name;?></a>
<ul>
<?php foreach($submenus as $submenu): ?>
<li>
<a href="#"><?php echo $submenu -> Sub_Menu_Name;?></a>
</li>
<?php endforeach;?>
</ul>
</li>
<?php endforeach;?>
</ul>
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
class MainSystem extends CI_Controller
{
function __construct() {
parent::__construct();
$this->load->model('menusys','ms');
}
function menu()
{
$this->data['menus'] = $this->ms->get_menu();
$this->data['submenus'] = $this->ms->get_submenu();
$this->load->view('index', $this->data);
}
function add_menu()
{
$data = array(
'Menu_Name' => $this->input->post('mname'),
'Menu_Link' => $this->input->post('mlink'),
);
$this->ms->adm($data);
}
function sub_menu()
{
$this->data['mmenu'] = $this->ms->get_menu();
$this->load->view('submenu', $this->data);
}
function add_submenu()
{
$data = array(
'Main_Menu_Name' => $this->input->post('mmname'),
'Sub_Menu_Name' => $this->input->post('mname'),
'Sub_Menu_Link' => $this->input->post('mlink'),
);
$this->ms->adsm($data);
}
}
?>
<?php
defined('BASEPATH') or exit('no direct script directy allowed');
/**
*
*/
class menusys extends CI_Model
{
public function __construct()
{
parent::__construct();
}
public function adm($data)
{
$this->db->set('Is_Active',0);
$this->db->insert('main_menu',$data);
$this->session->set_flashdata('msg', 'Meun has been added');
redirect('MainSystem/menu');
}
//sub-menu Section
public function get_menu()
{
//$this->db->where('Is_Active',1);
// $this->db->select('*');
// $this->db->from('main_menu');
// $this->db->join('sub_menu', 'main_menu.Menu_Name = sub_menu.Main_Menu_Name','inner');
// $query = $this->db->get();
// return $query->result();
//
$query=$this->db->get_where('main_menu',array('Is_Active'=>1));
return $query->result();
}
function get_submenu()
{
$this->db->where('main_menu.Menu_Name = sub_menu.Main_Menu_Name');
$this->db->select('*');
$this->db->from('sub_menu');
$this->db->join('main_menu', 'main_menu.Menu_Name = sub_menu.Main_Menu_Name','inner');
$query = $this->db->get();
return $query->result();
}
public function adsm($data)
{
$this->db->set('Is_Active',1);
$this->db->insert('sub_menu',$data);
$this->session->set_flashdata('msg', 'Meun has been added');
redirect('MainSystem/menu');
}
}
我的型号代码
<ul class="slimmenu">
<?php foreach($menus as $menu): ?>
<li>
<a href="#"><?php echo $menu -> Menu_Name;?></a>
<ul>
<?php foreach($submenus as $submenu): ?>
<li>
<a href="#"><?php echo $submenu -> Sub_Menu_Name;?></a>
</li>
<?php endforeach;?>
</ul>
</li>
<?php endforeach;?>
</ul>
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
class MainSystem extends CI_Controller
{
function __construct() {
parent::__construct();
$this->load->model('menusys','ms');
}
function menu()
{
$this->data['menus'] = $this->ms->get_menu();
$this->data['submenus'] = $this->ms->get_submenu();
$this->load->view('index', $this->data);
}
function add_menu()
{
$data = array(
'Menu_Name' => $this->input->post('mname'),
'Menu_Link' => $this->input->post('mlink'),
);
$this->ms->adm($data);
}
function sub_menu()
{
$this->data['mmenu'] = $this->ms->get_menu();
$this->load->view('submenu', $this->data);
}
function add_submenu()
{
$data = array(
'Main_Menu_Name' => $this->input->post('mmname'),
'Sub_Menu_Name' => $this->input->post('mname'),
'Sub_Menu_Link' => $this->input->post('mlink'),
);
$this->ms->adsm($data);
}
}
?>
<?php
defined('BASEPATH') or exit('no direct script directy allowed');
/**
*
*/
class menusys extends CI_Model
{
public function __construct()
{
parent::__construct();
}
public function adm($data)
{
$this->db->set('Is_Active',0);
$this->db->insert('main_menu',$data);
$this->session->set_flashdata('msg', 'Meun has been added');
redirect('MainSystem/menu');
}
//sub-menu Section
public function get_menu()
{
//$this->db->where('Is_Active',1);
// $this->db->select('*');
// $this->db->from('main_menu');
// $this->db->join('sub_menu', 'main_menu.Menu_Name = sub_menu.Main_Menu_Name','inner');
// $query = $this->db->get();
// return $query->result();
//
$query=$this->db->get_where('main_menu',array('Is_Active'=>1));
return $query->result();
}
function get_submenu()
{
$this->db->where('main_menu.Menu_Name = sub_menu.Main_Menu_Name');
$this->db->select('*');
$this->db->from('sub_menu');
$this->db->join('main_menu', 'main_menu.Menu_Name = sub_menu.Main_Menu_Name','inner');
$query = $this->db->get();
return $query->result();
}
public function adsm($data)
{
$this->db->set('Is_Active',1);
$this->db->insert('sub_menu',$data);
$this->session->set_flashdata('msg', 'Meun has been added');
redirect('MainSystem/menu');
}
}
您需要格式化菜单数组并像这样循环它
$menu = array(
'menu_name_1' => array(
'submenu1_1' => 'www.something.com',
'submenu1_2' => 'www.something.com',
),
'menu_name_2' => array(
'submenu2_1' => 'www.something.com',
'submenu2_2' => 'www.something.com',
)
);
foreach($menu as $menu_name => $submenu){
echo $menu_name.'<br>';
if (!empty($submenu)){
foreach($submenu as $submenu_name => $submenu_link){
echo '<a href="'.$submenu_link.'">'.$submenu_name.'</a><br>';
}
}
}
$menu=array(
'菜单名称\u 1'=>数组(
'子菜单1_1'=>'www.something.com',
'子菜单1_2'=>'www.something.com',
),
'菜单名称\u 2'=>数组(
'子菜单2_1'=>'www.something.com',
'子菜单2_2'=>'www.something.com',
)
);
foreach($menu作为$menu\u name=>$SUMBEMNU){
回显$menu_名称。“
”;
如果(!空($子菜单)){
foreach($submenu作为$submenu\u name=>$submenu\u链接){
回声“
”;
}
}
}
您有一个带有菜单名和子菜单的数组。首先,您循环菜单名称并检查它是否有子菜单,如果有,则循环子菜单并创建链接。您希望每个主菜单包含相应的子菜单,问题是所有主菜单都有相同的子菜单。对吗?是的,这就是问题所在。你确定所有这些主菜单都包含数据库中相应的子菜单吗?只有第一个主菜单有它的子菜单,但子菜单在每个主菜单下重复。你只有那两行。是吗?很抱歉,我不明白$menu=array('menu\u name\u 1'=>array('submenu 1\u 1'=>'www.something.com','submenu 1\u 2'=>'www.something.com',),'menu\u name\u 2'=>array('submenu 2\u 1'=>'www.something.com','submenu 2\u 2'=>'www.something.com',);