2015-11-09 4 views
2

извините, ребята, я хочу спросить, почему да, почему вдруг неверный аргумент предоставлен для foreach() CodeIgniter, когда я пробовал benerin, но тем не менее все еще так. Первоначально я хотел сделать вкладываемый в CodeIgniter .. и это пример моего сценария в контроллереневерный аргумент, предоставленный foreach() codeigniter3 в функциональном контроллере

function load_menus() { 
    $this->load->model("webadmin/we_model"); 
    $data["menus"] = $this->me($this->we_model->get_menus()); 
    $this->load->view("webadmin/loadmenu.php",$data); 
} 
private function me($menus = array()) { 
     $html = ''; 

     // Build all application menus in a tree format 
     foreach($menus as $menu) 
     { 
      // Check if this menu has children 
      $count_menu_children = count(get_value($menu, 'children')); 

      // Build a single line menu 
      $html .= '<li id="menu-item-' . get_value($menu, 'id_menu') . '" class="dd-item dd3-item" data-id="' . get_value($menu, 'id_menu') . '" order="' . get_value($menu, 'order_') . '">'; 

      $html .= '<div class="dd-handle dd3-handle"></div>'; 

      $html .= '<div class="dd3-content">'; 

       $class = get_value($menu, 'dtt_inative') != '' ? 'text-error' : ''; 


       $label = get_value($menu, 'url_img') == '' && get_value($menu, 'label') == '' ? '[NO NAME]' : lang(get_value($menu, 'label')); 

       $html .= '<a href="javascript:void(0)" class="menu-label ' . $class . '" data-toggle="modal" data-target="#modal-menu-' . get_value($menu, 'id_menu') . '">' . $label . '</a>'; 

       $html .= '<i class="text-success fa fa-fw fa-check-circle" style="display: none; margin-left: 5px"></i>'; 

       $html .= '<a href="javascript:void(0)" class="menu-delete pull-right hidden"><i class="fa fa-times fa-fw"></i></a>'; 

      $html .= '</div>'; 

      // If current menu has children items, then build all again 
      if($count_menu_children > 0) 
       $html .= '<ol class="dd-list">' . custom_menu_tree(get_value($menu, 'children')) . '</ol>'; 

      $html .= '</li>'; 
     } 

     return $html; 
    } 

Моя модель

public function get_menus() 
    { 
     $sql = "SELECT m.*, 
         IFNULL(parent, 0) AS id_menu_parent 
        FROM m_a m"; 
     return $this->db->query($sql)->result_array(); 
    } 

My View

<?php if(count($menus) > 0) { ?> 
<div class="dd"><ol class="dd-list"><?php echo $menus; ?></ol></div> 
<?php } else { echo message('info', '', lang('There is no menu items for this group. Click on button New menu above to start adding a new menu.')); } ?> 
+0

если $ меню пусто ??? –

ответ

0

В этом

private function me($menus = array()) { 
     $html = ''; 

     // Build all application menus in a tree format 
     foreach($menus as $menu) 
     { 

Вы забыли назвать модель Метод, который содержит данные о вашем меню. Добавьте это до foreach.

$this->model_name->get_menus(); 

Как это

private function me($menus = array()) { 
    $html = ''; 

    $this->model_name->get_menus(); 
    foreach($menus as $menu) 
    { 
+0

Я не забыл. Я вызываю имя модели в контроллере функции load_menus(); –

+0

его нет в вашем коде –

+0

function load_menus() { $ this-> load-> model ("webadmin/we_model"); $ data ["menus"] = $ this-> me ($ this-> we_model-> get_menus()); $ this-> load-> view ("webadmin/loadmenu.php", $ data); } –

0

просто проверить, если у вас есть значение в $menus перед передачей его foreach()

if(count($menus)){ 
    foreach($menus as $menu) { 
     // your code here. 
    } 
} 
return $html;//keep this after if(). 
0

я думаю, вы должны попробовать это, прежде чем

foreach($menus as $menu){} 

проверить ли

if(!empty($menus)){ 
    foreach($menus as $menu){ 
     your code; 
    } 
} 
else{ 
    your code; 
} 
0

ОЭК спасибо за помощь мне спросить sloved и я забыл

$map = array(
      0 => array('childen' => array()) 
     ); 

     foreach ($menus as &$menu) { 
      $menu['children'] = array(); 
      $map[get_value($menu, 'id_menu')] = &$menu; 
     } 

     foreach ($menus as &$menu) { 
      $map[get_value($menu, 'id_menu_parent')]['children'][] = &$menu; 
     } 

     return $map[0]['children']; 
Смежные вопросы