Kohana 3 Routes&查询字符串

时间:2011-02-26 00:52:44

标签: php routing kohana-3

似乎普遍的共识是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装置的问题吗?在此先感谢您的帮助!

1 个答案:

答案 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',
    ));