2011-02-26 248 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', 
    ));