2011-08-31 83 views
2

好的,也許這個標題有點混亂。我想要做的是捕獲任何信息,如果有的話在第一個URI分段之後,如果該分段是特定的並將其轉發到另一個控制器。這是我的路線文件:CodeIgniter,一條路線中有多個可能的分段

$route['default_controller'] = "main"; 
$route['404_override'] = ''; 
$route['testroute'] = "main"; 

那麼,這是什麼一樣,現在,如果我得到mydomain.com/testroute它顯示我的默認頁面,這是它應該。但是,我想要的是,如果我去mydomain.com/testroute/testmethod/其中testmethod是主控制器中的一個方法,我希望它也轉發。所以基本上我希望它能夠路由到主控制器,而不管在testroute之後是否有更多的段,但是如果有,它們應該作爲主控制器的方法調用傳遞。

回答

3

只需捕獲給定的參數並將其傳遞給控制器​​例如像這樣:

$route['testroute/(:any)'] = "main/$1"; 

(:any)實際上捕獲任何類型的字符串。還有其他選擇器。有關此主題的更多信息,請參閱here

編輯(回答你的評論):

如果你想你的主控制器的index()方法的一般途徑,只需添加這兩種路線:

$route['testroute'] = "main"; 
$route['testroute/(:any)'] = "main/$1"; 
+0

呀。我試過了。問題是我得到一個404,如果我只是去testrute /沒有任何細分後。如果沒有更多的段而不必聲明一條單獨的路由,是否有辦法將它解析爲主索引? – LoneWolfPR

+0

見上面,我編輯了答案。另外,我真的建議考慮看看在CI手冊的文章,有很多方法可以讓路由(正則表達式和其他不錯的東西) –

+0

響應編輯:是的,我想,這就是我必須做的,如果可能的話,我只是想盡量保持一條路線的簡單性。 – LoneWolfPR

0

呃,什麼?這就是CodeIgniter控制器的工作原理。向我們展示一些代碼?什麼是不工作呢?

您是否在.htaccess文件中配置了URL重寫功能,因此您不需要URL中的/index.php/testroute

開放的.htaccess,並嘗試這個代碼,如果你還沒有改寫這樣的:

RewriteEngine on 
RewriteCond $1 !^(index\.php|robots\.txt) 
RewriteRule ^(.*)$ index.php/$1 [L] 

如果您還沒有配置重寫話,就不會沒有這種工作^,但你可以像訪問mydomain.com/path/to/ci/index.php/testroute/testmethod

+0

這是材料的評論,沒有答案.. – Ben

+0

@Ben Refresh,請。請參閱我編輯答案以包含更多信息以嘗試。 – Cyclone

+0

仍然錯過了我認爲的觀點 – Ben