在代码点火器中跳跃控制器

时间:2011-04-27 00:21:08

标签: php codeigniter controller routes

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

基本上我想抓住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');
}

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

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

1 个答案:

答案 0 :(得分:2)

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

通过Google的眼睛来看:http://codeigniter.com/forums/viewthread/55212/P15/是一个与声明的CI助手的长时间讨论,让你这样做,http://codeigniter.com/wiki/Wick/是一个看起来实际上是这样做的库

如果其中任何一个解决了问题,请告诉我:你可能会更好地重构那些,但是一段时间之后确实会变得乏味,所以我可以理解将处理权移交给另一个控制器的愿望(为什么要打扰 - 如果你不必绊倒。