Как создать динамическое меню в codeigniter

У меня проблема с включением категории в список codeigniter
моя таблица:

    id    name      sub_category   category_name    desc     status
    3    submenu1       menu1      category1        desc1      1
    4    submenu1       menu2      category1        desc1      1
    5    submenu1       menu1      category2        desc1      1
    6    submenu1       menu2      category2        desc1      1

мой ожидаемый результат:

 category1
   submenu1 
     menu1
     menu2

 category2
   submenu1 
     menu1
     menu2

список как такая структура

Mycontroller:

    public function index(){
// $this->load->view('view_admin/home');
$data['menu']=$this->Admin_model->menu();
$data['menu1']=$this->Admin_model->menu1();
$data['menu2']=$this->Admin_model->menu2();
echo '<pre>';
print_r($data['menu1']);
echo '</pre>';
$this->load->view('view_admin/banner',$data);
}

Моя модель:

 function menu(){
    $this->db->select('*');
    $this->db->from('productpage');
    $this->db->where('status',1);
    $this->db->group_by('category_name');
    $query = $this->db->get();
    $result = $query->result();
    return $result;
}
function menu1(){
    $this->db->select('*,group(');
    $this->db->from('productpage');
    $this->db->where('status',1);
    $this->db->group_by('name');
    $query = $this->db->get();
    $result = $query->result();
    return $result;
}
function menu2(){
    $this->db->select('*');
    $this->db->from('productpage');
    $this->db->where('status',1);
    $this->db->group_by('sub_category');
    $query = $this->db->get();
    $result = $query->result();
    return $result;
}

я получил такую ​​ошибку Произошла ошибка PHP Степень серьезности: уведомление

Сообщение: Попытка получить свойство не-объекта

Имя файла: view_admin / banner.php

Номер строки: 58

как создать для каждого цикла в представлении, чтобы получить ожидаемый результат

Спасибо за ваш ценный ответ

Вам не нужен метод для каждого меню, вы можете передать идентификатор в качестве аргумента. Обновите свой вопрос кодом в строке 58

Spoody 27.04.2018 20:44

спасибо за ответ, пожалуйста, дайте немного кода для представлений, как показать мой ожидаемый результат. я действительно борюсь

Jothees pvj 27.04.2018 20:47

Я не могу дать вам код. Я понятия не имею, какова структура данных и что вы пробовали до сих пор. Сделайте то, что я сказал в первом комментарии, и я посмотрю, что я могу сделать.

Spoody 27.04.2018 20:48

хорошо, спасибо за ваш ответ

Jothees pvj 27.04.2018 20:50
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
4
45
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вам просто нужна одна функция запроса / модели и немного переупорядочить массив перед представлением:

Модель:

function menu(){
    return $this->db->get_where('productpage', array('status' => 1))->result_array();
}

Контроллер:

$array = $this->Admin_model->menu();
$menu = array();
foreach ($array as $item) {
    // rearrange things
    $menu[$item['category_name']][$item['name']][] = $item['sub_category'];
}
$this->load->view('view_admin/banner', array('menu_data' => $menu));

Вид:

foreach ($menu_data as $cat_name => $sub_menu) {
    echo $cat_name . '<br>';
    foreach ($sub_menu as $sub_menu_name => $menus) {
        echo $sub_menu_name . '<br>';
        foreach ($menus as $menu) {
            echo $menu . '<br>';
        }
    }
}

Создает:

category1
submenu1
menu1
menu2
category2
submenu1
menu1
menu2

Другие вопросы по теме