2016-06-29 10 views
1

Ich habe Probleme mit der Anzeige des Menüs auf der Website. Der Link website.com/menu zeigt Links aus der Datenbank an.Codeigniter Menü wird nicht angezeigt

enter image description here

Aber auf der Menüleiste der Website es nicht angezeigt wird. enter image description here

Controller-Menü:

public function index() 
{  
    $this->load->model("menu_model"); 
    $data = array(); 

    if ($menu_query = $this -> menu_model-> getCategories()) { 
     $data['recordsmenu'] = $menu_query; 
    } 
    $this->load->view("includes/menu", $data); 
} 

Menu_model:

public function getCategories() 
{ 
    $this->db->select('*'); 
    $this->db->from('category_name'); 
    $this->db->where('parent_id','0'); 
    $this->db->order_by('category_id', 'asc'); 
    $menu_query = $this->db->get(); 

    if ($menu_query->num_rows() != 0) { 
     return $menu_query->result(); 
    } else { 
     return false; 
    } 
} 

Menü Ansicht:

<ul class="nav navbar-nav"> 
    <?php if(isset($recordsmenu)) : foreach ($recordsmenu as $menu): ?>   
    <li><a href="<?php echo base_url(); echo $menu->linkname;?>"><?php echo $menu->catname;?></a></li> 
    <?php endforeach; ?> 
    <?php else : ?> 
    <?php endif; ?> 
</ul> 

Während die Steuerung aller anderen Seiten der Website ist als:

function index() 
{ 
    $this->load->model('slides_model'); 
    if ($query = $this -> slides_model-> get_records()) { 
     $data['records'] = $query; 
    } 
    $data['main_content'] = 'home'; 
    $this ->load->view('includes/template', $data); 
} 

Die template.php Datei im includes Ordner ist:

<?php $this->load->view('includes/header'); ?> 
<?php $this->load->view('includes/menu'); ?> 
<?php $this->load->view($main_content); ?> 
<?php $this->load->view('includes/footer'); ?> 
+1

Was Fehler oder Ausgang ?? –

+0

Sie müssen eine globale Variable erstellen und die Menüdaten in template.php übergeben. Zurzeit hat template.php keine Daten bekommen. – krutssss

+0

'recordsmenu' und' Records' zwei verschiedene Datenvariablen –

Antwort

0

Ich weiß nicht, wie ich es getan habe ist richtig oder nicht .. aber es funktioniert jetzt.

Ich habe dies hinzugefügt, um application/Kern/MY_Controller.php

function __construct() 
    { 
     parent::__construct(); 
     $this->load->model("menu_model"); 
     $data = array(); 

      if($menu_query = $this -> menu_model-> getCategories()) 
      { 
       $data['recordsmenu'] = $menu_query; 
      } 

     $this-> load -> view('includes/header'); 
    $this->load->view("includes/menu", $data); 

    } 

& entfernt Header & Menü aus Datei template.php

+0

Nein! Sie tun das nicht im Hauptordner. Du tust das nie. Was Sie tun, ist kopieren Sie den ersten Teil meiner Antwort einfügen, wie es ist und eine Datei namens MY_Loader.php im Ordner "/ application/core /". Und der zweite Teil meiner Antwort ist, was Sie in Ihrem Controller tun @ user3901675 – frank

0

Aktuell Ihre Menüansicht keine Daten empfängt. Eine effiziente Lösung ist, dass Sie die folgenden application/core/MY_Loader.php

<?php 
defined('BASEPATH') OR exit('No direct script access allowed'); 

class MY_Loader extends CI_loader{ 

    public function view_loader($main_content_view, $dat = array(), $return=FALSE) 
    { 
     if($return==TRUE): 
      $content = $this->view('partials/header_view', $dat, $return); 
      $content .= $this->view('partials/menu_view', $dat, $return); 
      $content .= $this->view($main_content_view, $dat, $return); 
      $content .= $this->view('partials/footer_view', $dat, $return); 

      return $content; 
     else: 
      $this->view('partials/header_view', $dat); 
      $this->view('partials/menu_view', $dat); 
      $this->view($main_content_view, $dat); 
      $this->view('partials/footer_view', $dat); 
     endif; 
    } 

und verwenden Sie es in Ihrem Controller Blick auf diese Weise zu laden hinzufügen:

public function method_name() 
{ 
    if ($menu_query = $this -> menu_model-> getCategories()) { 
    $data['recordsmenu'] = $menu_query; 
    } 
    $data['some_other_data'] = $this->model_name->method_name(); 
    $this->load->view_loader("main_content_view_name", $data); 
} 
+0

Ich habe dies auch versucht, aber es nicht tun Hilfe. –

+0

können Sie posten, was Sie getan haben? @ user3901675 – frank

+0

yeah sure ... fügt nur die Antwort hinzu –