我想要一种动态路由形式。
基本上我想抓住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');
}
这是一个非常基本的例子!
所以我的问题是, 一旦做出决定,我将如何重新路由到其他控制器?
答案 0 :(得分:2)
从广义上讲,使用CodeIgniter进行此操作非常麻烦。来自Java的RequestDispatcher.forward()负责处理这些事情,但在PHP空间中它通常是一个redirect():通常没有服务器端基础结构(有效地)将请求从一个PHP文件传递到另一个PHP文件没有客户端往返。
通过Google的眼睛来看:http://codeigniter.com/forums/viewthread/55212/P15/是一个与声明的CI助手的长时间讨论,让你这样做,http://codeigniter.com/wiki/Wick/是一个看起来实际上是这样做的库
如果其中任何一个解决了问题,请告诉我:你可能会更好地重构那些,但是一段时间之后确实会变得乏味,所以我可以理解将处理权移交给另一个控制器的愿望(为什么要打扰 - 如果你不必绊倒。