似乎普遍的共识是Kohana 3路由机制将忽略查询字符串参数(例如,参见this thread)。但是,这不是我在申请中看到的行为。
路线的定义如下:
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
为了让它更令人沮丧,这个相同的路由设置在我在同一个localhost上开发的另一个应用程序中运行得很好。想法?我的路线设置不正确吗?这可能是Kohana装置的问题吗?在此先感谢您的帮助!
答案 0 :(得分:0)
喂!什么是默认目录?你能把它删除吗?
Route::set('an_action', 'admin/an_action(/<id>)')
->defaults(array(
'controller' => 'Admin_welcome',
'action' => 'index'
);
因此,在这种情况下,您将拥有以下内容:
动作:localhost / admin / an_action / 3打开网址 controller:Controller_admin_welcome,默认操作 - action_index。
因此,如果您希望您的操作名称位于您的网址中,则需要使用Kohana保留名称来执行该操作&lt; action&gt; - 我不确定这个名字 - 明天我会更新我的帖子。
我相信你已正确设置你的mod_rewrite和index.php文件correclty。
这是默认控制器:
Route::set('default', '(<controller>(/<action>(/<id>)))')
->defaults(array(
'controller' => 'Main',
'action' => 'index',
));