2011-02-26 167 views
0

Kohana 3路由機制忽略查詢字符串參數似乎是普遍的共識(例如參見this thread)。但是,這不是我在應用程序中看到的行爲。Kohana 3路由和查詢字符串

的路由被定義,像這樣:

Route::set('an_action', 'admin/an_action(/<id>)') 
->defaults(array(
    'directory'  => 'admin', 
    'controller' => 'welcome', 
    'action'  => 'an_action', 
)); 

動作本身需要從查詢字符串「URL」參數,如果沒有給出錯誤的結果,表明路由是成功的,並且行動企圖執行:

http://myapp.localhost/admin/an_action/3 

ERROR: ErrorException [ 8 ]: Undefined index: url ~ APPPATH/classes/controller/admin/welcome.php [ 37 ] 

,但如果我添加URL查詢參數,路由完全失敗:

http://myapp.localhost/admin/an_action/3?url=myapp.localhost/admin 

Kohana_Request_Exception [ 0 ]: Unable to find a route to match the URI: admin/an_action/3?url=myapp.localhost/admin 

爲了讓它更令人沮喪,這個相同的路由設置在另一個我正在開發的本地主機上的應用程序中工作得很好。想法?我的路線設置不正確?這可能是Kohana安裝的問題嗎?在此先感謝您的幫助!

+0

使用'$ PARAMS =路線::得到( 'an_action') - >匹配($ URI)'來檢查您的路線。嘗試檢查這些網址:'admin/an_action /','admin/an_action/3','admin/an_action /','admin/an_action /?uri = test','admin/an_action/3?uri = test' – biakaveron 2011-02-26 07:26:25

回答

0

嘿!什麼是默認的目錄?你能刪除它嗎?

Route::set('an_action', 'admin/an_action(/<id>)') 
->defaults(array(
    'controller' => 'Admin_welcome', 
    'action' => 'index' 

);

所以,在這種情況下,你將有以下幾點:

行動:本地主機/管理/ an_action/3打開URL 控制器:默認操作Controller_admin_welcome - action_index。

所以,如果你想要你的動作名稱在你的網址,你需要使用Kohana保留的名稱爲<動作> - 我不知道名稱 - 明天我會更新我的文章。

我相信你已經正確設置了你的mod_rewrite和index.php文件correclty。

這是默認的控制器:

Route::set('default', '(<controller>(/<action>(/<id>)))') 
    ->defaults(array(
     'controller' => 'Main', 
     'action'  => 'index', 
    ));