2013-07-05 175 views
0

我有一個路由小問題。codeigniter路由功能

我的路線:

$route['category/(:any)/(:num)'] = "site/index/$2"; //not working 
$route['category/(:any)'] = "site/index"; //not working 
$route['category/(:any)/(:any)'] = "site/view/$2"; // working 
$route['Search'] = "site/search"; // working 

我想要什麼:http://example.com/category/Home - 調用網站/指數函數參數$ 2 我歌廳404埃羅那些2條規則 http://example.com/category/Home/2調用點/索引功能。

我試過的是回顯類別/(:any)/(:num)的參數,它回顯了它。這個回聲在索引函數中。視圖和模型存在於我聲明的路徑中。沒有它,索引頁本身就無法工作。所以我認爲這個問題必須在路由

最有趣的是,當我改變類/(:任何)路線網站/視圖它正在工作,但是當我設置那裏站點/索引它不起作用。即使我只在那裏設置網站。

+0

category行動刪除您的路線,然後重試。它應該自動路由到正確的操作。正如[here](http://ellislab.com/codeigniter/user-guide/general/routing.html)所解釋的那樣,默認行爲是'example.com/class/function/id /'。 – Brewal

+0

我試圖刪除路線並重新添加,但沒有任何事情發生。如果路線不在那裏,它會調用站點/查看功能 – DeiForm

+0

好的...我看到你的問題 – Brewal

回答

0

我認爲你要做的是把你的site類作爲「默認控制器」。剛剛嘗試這一點:

$route['default_controller'] = "site"; 
$route['(:any)'] = "site/view/$1"; 
$route['(:num)'] = "site/index/$1"; 

我真的不知道你正在嘗試與你site/view/$1site/index/$1做它的工作是這樣的:

example.com/someaction將匹配$route['(:any)']和將調用的的view方法site控制器作爲字符串參數someaction

example.com/2將匹配$route['(:num)']並將site控制器的index動作與2作爲整數參數進行調用。

example.com/admin將調用admin控制器

example.com/admin/categoryindex行動將調用admin控制器

+0

我從開始路由它。這不會做到這一點,因爲網站/索引/ $ 1是分頁,每個類別都有自己的文章數量。現在我的唯一規則是'$ route ['category /(:any)'] =「site/index」;'進入example.com/category/Home後我得到了404條。我很困惑。 編輯:如果我將規則設置爲「站點/視圖」,它將傳遞給我查看函數,但是如果我需要索引函數,它不會讓我。 – DeiForm

+0

這是因爲你忘記了參數:'$ route ['category /(:any)'] =「site/index/$ 1」;'。嘗試閱讀更多的文檔。 – Brewal

+0

索引函數不需要一個參數,我也試過這個,它也不工作。再次嘗試了一次,以防萬一現在仍然不能正常工作 – DeiForm