【问题标题】:How to add Exception to route with :any in CodeIgniter?如何在 CodeIgniter 中使用 :any 添加异常到路由?
【发布时间】:2012-03-28 05:21:42
【问题描述】:

在我的项目中,像这样在控制器文件夹内的文件夹下设置了一个管理面板

controllers/admin_panel/dashboard.php

当我们这样打开它时,它会加载dashboard控制器默认值 http://www.mysite.com/admin_panel

现在我在根级别添加了一个page 控制器来从数据库加载页面内容。所以在这里我有一些CMS的设置。为了加载页面控制器,我在路由中添加了如下条件

$route[':any'] = "page";

但它现在所做的是,当我尝试打开 admin_panel 时,它会加载页面控制器。 所以我想在这里添加一种异常条件,例如 route any except admin_panel

有什么建议可以实现吗?

提前致谢。

【问题讨论】:

    标签: php codeigniter routes


    【解决方案1】:

    您可以在该路线上方定义另一条路线,将您带到管理面板。在 CodeIgniter 中,路由将按照它们定义的顺序运行。

    $route['admin_panel'] = 'admin_panel';
    $route[':any'] = 'page';
    

    您应该可以通过上述路由访问 admin_panel。

    【讨论】:

    • 我已经尝试过了,但是它不会像 admin_panel/user_manager 或 admin_panel/user_add 那样加载 admin_panel 下的子页面
    • @aslamdoctor 你需要在最后一条之前添加另一条路线,$route['admin_panel/(:any)'] = "admin_panel/$1";
    • @DamienPirsy 假设我想在页面控制器中添加一些检查,例如是否存在带有他在 URL 中传递的名称的控制器,然后加载该控制器,否则在数据库中查找该页面。例如 mysite.com/about-us ,数据库中有一个条目,因此它将加载“about-us”的内容并仅使用“页面”控制器打印它。但是假设我已经有一个名为“about-us”的控制器并且我想加载它,我该怎么做?
    • @aslamdoctor 我认为你应该为此发布一个问题,而不是仅仅评论一个答案。
    猜你喜欢
    • 1970-01-01
    • 2020-11-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多