【问题标题】:How to check if Controller already exists when already configured route using Codeigniter?已使用 Codeigniter 配置路由时如何检查控制器是否已存在?
【发布时间】:2012-03-28 06:25:49
【问题描述】:
在我的网站上,我像这样从数据库中动态加载内容
e.g mysite.com/about-us
为此,数据库中有一个条目,因此它将加载“关于我们”的内容并仅使用“页面”控制器打印它。
为此,我在 routes.php 中添加了以下配置
$route[':any'] = "page";
但是假设我已经有一个名为“about-us”的控制器并且我想加载它而不是数据库中的那个,我该怎么做?
【问题讨论】:
标签:
php
codeigniter
content-management-system
routes
【解决方案1】:
一个平稳的解决方案是使用 error/missing_page 控制器并将其指向config/routes.php。
然后它会首先自动选择所有现有的控制器,然后是那个控制器。
如果在数据库中没有找到记录,也可以拨打show_404()。
这允许您创建新的控制器,而无需将所有控制器都指向路由文件。
Read about 404 override here
【解决方案2】:
你需要添加这个
$route['about-us'] = "aboutus";
$route['about-us/(:any)'] = "aboutus/$1";
之前
$route[':any'] = "page";
由于CI路由不是贪心的,所以它在找到about-us控制器后不会检查页面控制器。