2012-11-05 29 views
0

使用HMVC與CI的最後一個版本安迪要路由HMVC的所有模塊控制器CI我如何路由HMVC的所有模塊的單控制器CI

如果我使用

$route[‘admin/(:any)’] = 「admin/」; 
$route[’(:any)’] = 「index/index/$1」; 
$route[’(:any)/(:any)’] = 「index/index/$1/$2」; 
$route[’(:any)/(:any)/(:any)’] = 「index/index/$1/$2/$3」; 

不是解決方案,因爲一個URL可以有許多段

我要路由控制器,方法,和所有的參數,如:

$route[’(:any)/(:any)/ *all parameters *’] = 「index/index/$1/$2/ *array($parameters)*」; 

或者如何能夠阻止HMVC的路線,我不需要HMVC的路線。

請幫忙。

謝謝,Jhon。

回答

0

你不需要路由,codeigniter已經這樣做了。

從一個全新的CI安裝,與welcome控制器玩:

public function index() 
{ 

    $args = $this->uri->uri_to_assoc(); 

    echo "<pre>"; 

    print_r($args); 

    echo "</pre>"; 

    // $this->load->view('welcome_message'); 
} 

參觀[HTTP://localhost/codeigniter2.1.2/index.php/welcome/index/param1/param1_value/param2/param2_value /參數3 /等]

產生這樣的:

Array
(
[param1] => param1_value
[param2] => param2_value
[param3] => etc
)

所以,你有你的控制器[歡迎],您的FUNC [索引]以及之後的所有內容都是參數;不需要弄亂路由。


您不需要考慮可能路由的每個可能的參數。

您可以使用這樣的路線:

$route[‘admin/(:any)’] = 「admin/」; 
$route[’(:any)/(:any)/(:any)’] = 「index/index/$1/$2/$3」; 

然後將除了admin/*每個URL將被路由到index/index。從這一點上,你可以抓取像我上面發佈的參數或通過$this->uri->segment(n);其中n是你想要的部分(因此,$this->uri->segment(3)將返回從上述路線$1)。

+0

Stormdrain,我想你沒有很好地理解我的問題。 我使用HVMC並調用一個模塊我使用這個URL 我需要路線: domain.com/admin/login/sss到控制器(管理員)/方法(登錄)/ PARAMS domain.com/admin2/登錄/ SSS對控制器(的admin2)/方法(登錄)/ PARAMS ..... 和「所有」其它給控制器/ methos/PARAMS 例如: domain.com/blog/ show/2012/10/ASC route to 類索引擴展控制器 ... pub lic函數索引($ blog,$ show,$ params = array($ year,$ month,$ order,...及其他){ ... } =>指向index/index/$ blog/$ show/$ params的路由 Thanks,Jhon。 – amic

+0

我更新了答案。看看是否有幫助。 – stormdrain

相關問題