0

我是 Codeigniter 的新用户,正在开发一个简单的后端 CMS 来管理页面。

基于 URL(在本例中,我隐藏了“index.php”):mysite.com/pagename

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

目前我有:

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

从而将所有请求转发到我的自定义函数。

但是,我想更改此结构,以便如果该页面在数据库中不存在,则遵循传统的 codeigniter 请求过程。

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

4

2 回答 2

1

最好的解决方案是升级到 CI 2.0,因为它足够稳定并且为您提供了大量有用的功能。

在您的情况下,设置以下路线:

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

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

而且我不想听到任何这种“哦,但它还没有发布”的废话,我已经使用 CI 2.0 将近一年了。;-)

于 2011-01-14T13:48:54.770 回答
0

我能想到两种可能:

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

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

2) 编辑 CI 的路由器类,使其首先检查页面是否在数据库中,如果没有,则继续。这可能有点混乱,因为您需要在 Router.php 中建立数据库连接

于 2011-01-14T13:07:04.787 回答