2011-04-27 99 views
0

我想要一種動態路由的形式。代碼點火器中的跳躍控制器

基本上我想抓住404(通過routes.php 404_override完成)。

這很簡單。

但是我想要做的是通過一系列的檢查。

e.g 不注意的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'); 
} 

來的事實,這就是一個非常基本的例子!

所以我的問題是, 一旦做出決定,我將如何去重新路由到其他控制器?

回答

2

從廣義上講,它與CodeIgniter做這件事很麻煩。來自Java領域的RequestDispatcher.forward()負責處理這些事情,但在PHP空間中,它通常是一個重定向():通常不是服務器端基礎設施將(有效)將請求從一個PHP文件傳遞到另一個沒有客戶端往返。

通過谷歌的視角來看:http://codeigniter.com/forums/viewthread/55212/P15/是一個CI幫手索賠讓你做一個長時間的討論,http://codeigniter.com/wiki/Wick/是出現真正做到這一點的庫。

讓我知道是否其中任何一個解決方案:你可能會更好地重構那些,但這確實乏味一段時間後,所以我可以理解的願望,只是將處理關閉到另一個控制器(爲什麼打擾 - 如果你不需要的話)。

+0

歡呼,非常有用,但認真的說,我確信正確的動態路由是最需要的功能之一...... – Hailwood 2011-04-27 02:00:50

+0

會很好:不確定是否有任何PHP框架可以本地管理。 – Femi 2011-04-27 02:09:16