2016-06-29 26 views
1

私はウェブサイト上にメニューを表示する問題があります。 データベースからのリンクを表示しているwebsite/menuのリンク。Codeigniterメニューが表示されない

enter image description here

しかし、それが表示されていないウェブサイトのメニューバーに。 enter image description here

コントローラーメニュー:

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; 
    } 
} 

メニュー表示:

<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> 

ウェブサイトの他のすべてのページのコントローラーとしてですが:現在、あなたのメニュー表示は、すべてのデータを受信して​​いない

<?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

にこれを追加しました? –

+0

グローバル変数を作成し、template.phpにメニューデータを渡す必要があります。現在template.phpにデータがありませんでした。 – krutssss

+0

'recordsmenu'と' records'は2つの異なるデータ変数です –

答えて

0

私は知らない私がやった方法を:効率的なソリューションを使用すると、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; 
    } 

に以下を追加して、このようにビューをロードするために、あなたのコントローラでそれを使用することができるということです右かどうかはわかりませんが、今は動作しています。

Iは、アプリケーション/コア/ 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); 

    } 
template.phpファイルからヘッダ&メニューを除去

&

+0

いいえ!あなたはコアフォルダでそれをしません。あなたはこれを決してしません。私の答えの最初の部分をそのままコピーして、 '/ application/core /'フォルダにMY_Loader.phpという名前のファイルを作ります。私の答えの2番目の部分は、コントローラ@ user3901675 – frank

0

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); 
} 

フォルダを含んでtemplate.phpファイルされます。

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

私もこれを試しましたが、それはしません助けて。 –

+0

あなたがしたことを投稿できますか? @ user3901675 – frank

+0

確かに...ちょうど答えを追加する –

関連する問題