2014-05-23 75 views
1

我是CodeIgniter的新手,並且被告知這是要走的路。數據庫驅動codeigniter navbar

我已經閱讀了幾次用戶手冊,但似乎沒有理解一件事是我想做一個從數據庫驅動的導航欄。我在這裏發現了一些關於我已經實現的方法的帖子,但無論我做什麼,它似乎都不適合我。我迄今所做的:

創建一個表:

CREATE TABLE IF NOT EXISTS `app_routes` (
    `id` bigint(20) NOT NULL auto_increment, 
    `slug` varchar(192) collate utf8_unicode_ci NOT NULL, 
    `controller` varchar(64) collate utf8_unicode_ci NOT NULL, 
    PRIMARY KEY (`id`), 
    KEY `slug` (`slug`) 
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=1; 

添加到route.php文件

$route[ 'default_controller' ] = 'home'; 
$route[ '404_override' ]  = 'error404'; 

require_once(BASEPATH .'database/DB'. EXT); 
$db =& DB(); 
$query = $db->get('app_routes'); 
$result = $query->result(); 
foreach($result as $row) 
{ 
    $route[ $row->slug ]     = $row->controller; 
    $route[ $row->slug.'/:any' ]   = $row->controller; 
    $route[ $row->controller ]   = 'error404'; 
    $route[ $row->controller.'/:any' ] = 'error404'; 
} 

設置了一個控制器:

<?php 
class Home extends CI_Controller { 

    public function index() 
    { 
     $this->load->view('smooth/header.php'); 
    $this->load->view('smooth/navbar.php'); 
     $this->load->view('smooth/index.php'); 
     $this->load->view('smooth/footer.php'); 

     } 
} 
?> 

在數據庫我有控制器home和頁面contact

當我通過我的域名訪問我的網站只有我看到了頭版,但如果我添加了index.php/home到它,我得到什麼或index.php/home/contact沒有任何

的路徑我index.php文件,位於我domain/application/views/themes/smooth/index.php

任何人都可以幫助我失去了什麼請問或是什麼問題?

+0

當EllisLabs不再積極維護它並且沒有其他人似乎還沒有提出接管時,任何人都會將CodeIgniter描述爲「要走的路」,這似乎有點奇怪。 –

+0

另外,您確實需要顯示您的視圖文件,因爲它很可能存在問題。 –

+0

@MatthewDaly,我質疑codeigniter不活躍,有人說圖書館會節省大量時間並且對安全性很好。 – user3475353

回答

0

您沒有將路由傳遞給視圖。

沒有看到問題的觀點我不能告訴,如果有一個問題存在,但你需要通過傳遞數據是這樣的:

$this->load->model('yourmodel'); 
$routes = $this->yourmodel->getRoutes(); 
$data = array(
    'routes' => $routes 
); 
$this->load->view('smooth/header.php'); 

數據庫查詢會在一個模型,所以你會需要定義該方法以及返回數據的方法 - 在這裏,我將該模型表示爲yourmodel,並將方法稱爲getRoutes。您不應該在的任何的情況下,將您的數據庫查詢置於routes.php