【问题标题】:jumping controllers in code igniter在 codeigniter 中跳跃控制器
【发布时间】:2011-08-13 11:15:06
【问题描述】:

我想要一种动态路由形式。

基本上我想捕捉 404(通过 routes.php 404_override 完成)。

这很容易。

但是接下来我要做的是通过一系列检查。

例如 不要注意 is_xxx 函数不是来自任何地方的事实

$what = $this->uri->segment(1);
if(is_vanity_name($what)){
    //now I want to route this to the profile controller and call the display function like so 
    //display('vanity', $what);
}
elseif(is_region_name($what)){
    if(($deal = $this->uri->segment(2)) !== false){
        //now I want to route to the deals controller can call the display function like so
        //display($deal, $what);
    } 
    else {
        //now I want to route to the deals controller and call the daily function like so
        //daily($what);
    }
}
elseif(is_deal_name($what)){
    //now I want to route to the deals controller and call the display function like so
    //display($what);
}
else{
    $this->load->view('errors/404');
}

这是一个非常基本的例子!

所以我的问题是, 一旦做出决定,我将如何重新路由到其他控制器?

【问题讨论】:

    标签: php codeigniter controller routes


    【解决方案1】:

    从广义上讲,使用 CodeIgniter 执行此操作有点麻烦。来自 java 领域的 RequestDispatcher.forward() 负责处理这些事情,但在 PHP 空间中,它通常是一个 redirect():通常没有服务器端基础架构来(有效)将请求从一个 PHP 文件传递​​到另一个没有客户端往返。

    从 Google 的角度看:http://codeigniter.com/forums/viewthread/55212/P15/ 是与 CI 助手的长时间讨论,声称可以让你这样做,http://codeigniter.com/wiki/Wick/ 是一个看起来确实可以做到的库。

    如果其中任何一个成功了,请告诉我:你最好重构它们,但这确实会在一段时间后变得乏味,所以我可以理解将处理传递给另一个控制器的愿望(为什么要麻烦轮回-非必要时绊倒)。

    【讨论】:

    • 干杯,非常有用,但说真的,我确信正确的动态路由是最需要的功能之一......
    • 会很好:不确定是否有任何 PHP 框架可以本地管理。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多