Hejsa.
Jeg har prøvet at tage en menu fra et tidligere projekt og kopiere over, men lige lidt hjælper det, den udskriver fint første lag af menuen, men næste lag er den ikke så glad for at udskrive - faktisk så udskriver den slet ikke lag 2.
Nogen kloge hoveder der kan fortælle hvad jeg gør forkert?
Menu helper
- <?php
-
- function e($string){
- return htmlentities($string);
- }
-
- function get_menu($array, $child = FALSE){
- $CI =& get_instance();
- $str = '';
-
- if(count($array)){
- if($child === FALSE){
- $str .= '<ul class="acc-menu">';
- } else {
- $str .= '<ul class="acc-menu">';
- }
-
- foreach($array as $item){
- //Check for children
- $active_parent = $CI->uri->segment(2) === $item['path'] ? TRUE : FALSE;
- $active = $CI->uri->segment(2) . '/' . $CI->uri->segment(3) === $item['path'] ? TRUE : FALSE;
-
- if((isset($item['children']) && count($item['children']) > 0) || (int)$item['root'] === 1){
- if((int)$item['root'] === 1){
- $str .= $active_parent ? '<li class="">' : '<li>';
- $str .= anchor(e($item['path']), '<i class="fa fa-' . $item['icon'] . '"></i><span>' . $item['name'] . '</span>');
- } else {
- $str .= $active_parent ? '<li class="">' : '<li>' . PHP_EOL;
- $str .= anchor(e($item['path']), '<i class="fa fa-' . $item['icon'] . '"></i><span>' . $item['name'] . '</span>');
- $str .= get_menu($item['children'], TRUE);
- }
- } else {
- $str .= $active ? '<li class="">' : '<li>';
- $str .= anchor(e($item['path']), $item['name']);
- $str .= get_menu($item['children'], TRUE);
- }
-
- $str .= '</li>';
- }
-
- $str .= '</ul>';
- }
-
- return $str;
- }
Model:
- <?php
-
- class Menu_model extends MY_Model{
- protected $_tablename = 'menu';
- protected $_order_by = 'order';
-
- public function get_nested(){
- $menus = $this->db->get('menu')->result_array();
-
- $array = array();
-
- foreach($menus as $menu){
- if(!$menu['parent_id']){
- $array[$menu['id']] = $menu;
- } else {
- $array[$menu['parent_id']]['children'][] = $menu;
- }
- }
-
- return $array;
- }
- }
SQL:
- -- phpMyAdmin SQL Dump
- -- version 4.1.9
- -- http://www.phpmyadmin.net
- --
- -- Vært: localhost:8889
- -- Genereringstid: 10. 11 2014 kl. 13:16:43
- -- Serverversion: 5.5.34
- -- PHP-version: 5.5.10
-
- SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
- SET time_zone = "+00:00";
-
- --
- -- Database: `template`
- --
-
- -- --------------------------------------------------------
-
- --
- -- Struktur-dump for tabellen `menu`
- --
-
- CREATE TABLE `menu` (
- `id` int(11) NOT NULL AUTO_INCREMENT,
- `name` varchar(100) NOT NULL,
- `description` tinytext NOT NULL,
- `path` varchar(255) NOT NULL,
- `icon` varchar(20) NOT NULL,
- `menu_type` int(11) NOT NULL,
- `parent_id` int(11) NOT NULL,
- `created` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
- `updated` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
- `published` enum('0','1') NOT NULL,
- `root` int(11) NOT NULL,
- `order` int(11) NOT NULL,
- PRIMARY KEY (`id`)
- ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=4 ;
-
- --
- -- Data dump for tabellen `menu`
- --
-
- INSERT INTO `menu` (`id`, `name`, `description`, `path`, `icon`, `menu_type`, `parent_id`, `created`, `updated`, `published`, `root`, `order`) VALUES
- (1, 'Skrivebord', '', 'admin/dashboard', 'home', 1, 0, '2014-11-10 10:22:35', '0000-00-00 00:00:00', '1', 1, 0),
- (2, 'Indstillinger', '', 'admin/settings', 'cogs', 1, 0, '2014-11-10 10:34:34', '0000-00-00 00:00:00', '1', 1, 0),
- (3, 'System indstillinger', '', 'admin/settings/system', '', 1, 2, '2014-11-10 10:35:18', '0000-00-00 00:00:00', '1', 1, 0);