在CodeIgniter

时间:2016-12-12 03:58:17

标签: php codeigniter

我的header.php代码中有以下代码,$menu的值来自'my_controller.php&数据库查询已在menu_model.php中定义。

错误消息

Severity: Notice
Message: Undefined Index: menu_name
Filename: Header.php
Line number: 187
Backtrace:
    File: ////Header.php
    Line: 187
    Function: _error_handler

    File: ////my_controller.php
    Line: 32
    Function: view

menu_model.php

public function get_main_menu()
{
    $this->db->select("*");
    $this->db->from('menu');
    $this->db->order_by("menu_id", "ASC");
    $query = $this->db->get();
    return $query;
}

my_controller.php

protected function loadHeader($title = 'Home')
{       
    $menu['menu'] = $this->menu_model->get_main_menu()->result_array();
    //var_dump($menu['menu']); ***This shows data which is mentioned below
    $data['menu'] = $menu;
    $data['title'] = $title;
    $this->load->view('templates/header', $data);  ***This is line 32
}

的header.php

<?php foreach ((array_values($menu)) as $mega_menu): ?> 
    <li class="mega-menu">
    <a href="<?php echo BASE_URL.('/category/'.$mega_menu['menu_id'].'/'); ?>">
    <div><?php echo $mega_menu['menu_name']?></div>
    </a> ***This is line 187
    </li>
<?php endforeach; ?>

的var_dump($菜单)

array(1) { ["menu"]=> array(4) { [0]=> array(4) { ["menu_id"]=> string(1) "1"
["menu_name"]=> string(14) "Start Business" ["menu_desc"]=> string(34) "DSC,
DPIN Initiation etc. services" ["breadcrumb_id"]=> string(1) "0" } [1]=> array(4)
{ ["menu_id"]=> string(1) "2" ["menu_name"]=> string(12) "Intellectual" ["menu_desc"]=>
string(35) "Trademark and Copyright Filing etc." ["breadcrumb_id"]=> string(1) "0" }
[2]=> array(4) { ["menu_id"]=> string(1) "3" ["menu_name"]=> string(8) "Personal"
["menu_desc"]=> string(47) "Wills, Rent Agreements, General Affidavits etc."
["breadcrumb_id"]=> string(1) "0" } [3]=> array(4) { ["menu_id"]=> string(1) "4"
["menu_name"]=> string(9) "Contracts" ["menu_desc"]=> string(32) "General
Business Agreements etc." ["breadcrumb_id"]=> string(1) "0" } } }

有人可以帮我找错吗?

2 个答案:

答案 0 :(得分:4)

有些人会更改您的my_controller.php。可以$data['menu'] = $menu['menu'];代替$data['menu'] = $menu;

protected function loadHeader($title = 'Home')
{       
    $menu['menu'] = $this->menu_model->get_main_menu()->result_array();
    //var_dump($menu['menu']); ***This shows data which is mentioned below
    $data['menu'] = $menu['menu'];
    $data['title'] = $title;
    $this->load->view('templates/header', $data);  ***This is line 32
}

答案 1 :(得分:1)

首先将menu_model.php保存为Menu_model.php并使用以下代码

public function get_main_menu()
{
    $this->db->select("*");
    $this->db->from('menu');
    $this->db->order_by("menu_id", "ASC");
    $query = $this->db->get();
    return $query;
}

使用以下代码将my_controller.php保存为My_controller.php

protected function loadHeader($title = 'Home')
{       
    $this->load->helper('url');
    $this->load->model('menu_model');
    $menu= $this->menu_model->get_main_menu()->result_array();
    $data['menu'] = $menu;
    $data['title'] = $title;
    $this->load->view('templates/header', $data);
}

在您看来,请输入以下代码:

<?php foreach($menu as $mega_menu): ?> 
    <li class="mega-menu">
    <a href="<?php echo base_url('category/'.$mega_menu['menu_id']); ?>">
    <div><?php echo $mega_menu['menu_name'];?></div>
    </a>
    </li>
<?php endforeach; ?>