2011-10-07 53 views
0

我想爲我正在處理的電子商務項目使用codeigniter,但我認爲我需要一些自定義路由,但我不確定這是否可行。我希望能夠利用這個網址:代碼中的自定義路由

http://myecommsite.com/store/mens

默認情況下,在CI這將致電男子在店裏類的函數。我真正想要的是在商店類中調用泛型函數,並將「男士」作爲參數。原因是這個網站需要有一個男裝,女裝和兒童款。

這可能嗎?

而且當我再往下行......即

http://myecommsite.com/store/mens/category1/category2

如何讓我這個詞的工作?

回答

3

application/config/routes.php

喜歡的東西簡單地定義一個定製route,爲您的網址http://myecommsite.com/store/mens

$route['store/(:any)'] = "store/customfunction/$1"; 

這樣,所有的請求都會被映射到你的「customfunction」的方法,這需要參數「男裝」

您可能還想要優先考慮__remap()函數,該函數覆蓋方法(與覆蓋整個URI的路由相反)。從m一個:

如果你的控制器包含一個名爲__remap()的函數,它總是會調用 而不管你的URI包含什麼。它覆蓋了其中URI確定調用哪個函數的正常行爲 ,允許您定義自己的函數路由規則。

因此,您可以在控制器存儲中使用__remap()函數,並且任何內容都將重定向到該函數。方法名稱之後的任何段都將作爲第二個參數傳遞給__remap(),並且您可以使用此數組與call_user_func_array()
這可能適用於您的第二個URI示例。可能是這樣的

function __remap('mymethod',$array = array()) 
{ 
    return call_user_func_array('mymethod',$array); 
} 

,並在你的方法「的MyMethod」你選擇的數組元素,做你需要做的

什麼