gpt4 book ai didi

php - PHP Codeigniter 中的动态菜单和子菜单

转载 作者:行者123 更新时间:2023-11-29 03:22:47 26 4
gpt4 key购买 nike

我正在尝试使用 PHP Codeigniter 创建动态菜单。

有一些主菜单每个主菜单都有一些子菜单,如类别 -> 硬件、软件等。

我以某种方式做到了,但有一个问题,主菜单显示正确,但主菜单下的子菜单在每个主菜单中重复出现。

这是问题的图片:

Main Menu 1

Main Menu 2

我的查看代码

<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>

我的 Controller 代码

    <?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');
}


}

我想要的:我希望每个 Sub_Menu 都显示在其父菜单下。

我们将不胜感激。

更新

这是子菜单表格图片。

sub-menu table

最佳答案

你需要格式化你的菜单数组并像这样循环

$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>';
}
}
}

您有包含菜单名称和子菜单的数组。首先你循环菜单名称并检查它是否有子菜单,如果有,你循环子菜单并建立链接。

关于php - PHP Codeigniter 中的动态菜单和子菜单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41232385/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com