如何在Codeigniter中开发自定义CMS时处理路由

问题描述:

我是Codeigniter的最近用户,并且正在开发一个简单的后端CMS来管理页面。如何在Codeigniter中开发自定义CMS时处理路由

在基于URL(在这个例子中,我已经隐藏“的index.php”):mysite.com/pagename

我希望系统,以检测是否存在“页面名称”在我的数据库中的值,如果有的话,我需要系统重新路由到一个自定义控制器(例如:Pagemaker),如果没有记录称为pagename,只是做正常的事情(即找到一个名为pagename的控制器)

当前我有:

$route['(:any)'] = "pagemaker/create/$1"; 

由此所有请求都被转发到我的自定义功能。

但是我想改变这个结构,这样如果页面不存在于数据库中,传统的codeigniter请求过程就会被执行。

任何人都可以提供有关如何完成此任何意见?或者有关通常在codeigniter中路由自定义CMS的任何建议?

最好的解决办法是upgrade to CI 2.0,因为it's stable enough,它给你很多有用的功能。

在你的情况,设置以下路径:

$route['404_override'] = 'pagemaker'; 

如果路由器不知道哪里去了,它只是去PageMaker的控制器。然后可以检查第一个uri段是否存在,如果不存在,则创建一个自定义404页面而不是缺省默认页面。

我不想听到任何“哦,但它还没有发布”废话,我一直在使用CI 2.0近一年。 ;-)

我能想到的两种可能性:

1)编辑您的自定义功能,让重定向你的客户端时,页面不是在数据库 伪代码:

if($dbresult == null){ 
    redirect("http://yoursite.com/"+$this->uri->segment(3)); 
} 

2)编辑路由器因此它会首先检查页面是否在db中,如果不是,继续。这可能会有点混乱,因为你需要在你的Router.php数据库连接

+0

这个问题在于你的系统经常在一个循环中 - 每次都重定向回相同的pagemaker类而不工作。 – Ash 2011-01-14 13:23:52

+0

啊当然,我编辑了我的答案 – thomaux 2011-01-14 13:40:10