2012-06-04 64 views
1

我想創建而無需創建新的文件,並從數據庫中獲取數據的動態頁面存在...笨檢查URI段在數據庫

所以我的表會像:

Pages 
------ 
id | page_name | text 
1 | about  | about page goes here 
2 | contact | contact page goes here 

現在我的問題是我如何設法讓$this->uri->segement(1)自動檢查給定的頁面名稱是否存在於數據庫中?

我必須創建一個新的控制器來處理所有這些或?

+0

看看[hooks](http://codeigniter.com/user_guide/general/hooks.html)。 –

回答

1

如果你有幾個頁面,你想檢查,我會建議有一個頁面控制器,管理這些頁面。事情是這樣的

class Pages extends CI_Controller { 
    public function view($page_name) 
    { 
     $this->load->Pages_model(); 

     if($this->Pages_model->does_exist($page_name)) 
     { 
      // Does exist. Do things. 
     } else 
     { 
      show_404(); 
     } 
    } 
} 

在你routes.php,您將自己的aboutcontact頁面(你可能擁有的任何其他人)的頁面控制器。

$route['about'] = "pages/view/about"; 
$route['contact'] = "pages/view/contact"; 

Pages_model需要一個簡單的函數來檢查,如果頁面名稱存在於數據庫中。

function does_exist($page_name) { 

    $this->db->where('name', $page_name); // assuming you have a table with a `name` field 
    $query = $this->db->get('pages'); // select from the `pages` table 
    return $query->num_rows() > 0; // returns bool 

} 
+0

謝謝塞巴斯蒂安。這是另一種方式來做到這一點。 – fxuser