2012-06-04 46 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