2014-10-01 77 views
0

我已經設置了我的路線,以便在標準controller/action風格中調用大多數類。但是,對於我的前端,我不希望用戶看到被調用的操作,因此所有前端頁面都有自己的控制器並使用索引操作。這些是我的路由器bootstrap:Kohana 3.2路線問題

Route::set('normal', '<controller>(/<action>(/<arguments>))', 
    array(
     'arguments'  => '.*' 
    )) 
    ->defaults(array(
     'controller' => 'admin', 
     'action'  => 'index', 
    )); 

Route::set('default', '(<controller>(/<arguments>))', 
    array(
     'arguments'  => '.*', 
    )) 
    ->defaults(array(
     'controller' => 'home', 
     'action'  => 'index', 
    )); 

我目前有三個前端頁面,home,about_us和services。如果我不通過URL傳遞任何參數,它們都會很好,但如果我嘗試通過URL將參數傳遞給參數,則會出現問題。在服務中,只有action_index()才能顯示頁面,並檢查任何參數,並根據參數顯示結果。但是,如果我嘗試瀏覽/services/1在1至作爲參數傳遞我得到這個404錯誤:

Kohana_HTTP_Exception [ 404 ]: The requested URL services/1 was not found on this server. 

它只是使用了第一條路線,正常。一旦找不到動作,它甚至不會嘗試使用第二條路線,這將起作用。如果我交換路由的順序,那麼它可以工作,但是所有使用第一個控制器的其他類都停止工作,因爲我所有的操作都作爲參數傳遞給action_index()

我該如何得到這個工作?爲什麼當第一條路線不起作用時,Kohana不會繼續到第二條路線?

+0

試試這個syntanx:'路線::集( '正常', '(/ (/ (/ )))','和'路線: :set('default','(/ (/ ))',' – DanR 2014-11-05 21:26:00

回答

-1

您不需要爲每個路由創建控制器。您可以創建自定義路線(路線名稱)並指定控制器和操作名稱。閱讀文檔以獲取更多解釋。 Routing

對於參數試試這個:

Route::set('default', '(<controller>(/<arguments>))', 
    ->defaults(array(
     'controller' => 'home', 
     'action'  => 'index', 
    )); 
+0

除了參數規則之外,是不是和我已經有的完全一樣? – Styphon 2014-10-02 07:09:02