Kohana 3位专家,处理请求参数Route :: set(),request-> params()in K3 v。> = 3.1

时间:2011-03-31 18:03:02

标签: kohana-3 function-calls

最初在Kohana 3中,您可以通过URL传递控制器动作参数/参数,如下所示:

http:/website/controller/actionname/param1/param2/.../paramX

并通过简单地定义动作来处理它:

public action_actionname($params)
{
   $params_array = explode("/", $params); 
   //you can now use $params_array[0], $params_array[1], ...
}

现在似乎从v3.1开始他们决定弃用此功能(这里是link),它应该在v3.2中删除

似乎他们希望您使用 Route :: Set() request-> param()方法。这是否意味着每次在控制器中定义方法/操作时,都必须为应用程序中的其他位置的每个参数定义单独的路由?  任何人都可以用简单的方式向我解释这是如何工作的。只需调用一个函数就可以做到这一切似乎很麻烦。

1 个答案:

答案 0 :(得分:3)

也许您应该考虑在路由中使用正则表达式param来覆盖默认匹配行为...我通常使用它来在一个KO3“param”中捕获多个URL参数。例如:

Route::set('route1', '<controller>/<action>(/<param_list>)', array('param_list'=>'.*'))
->defaults(array(
    'controller'   => 'my_default_controller',
    'action'       => 'my_default_index'
));

现在在您的控制器中,$this->request->param("param_list")将等于正则表达式.*的任何匹配,这意味着您可以像希望的那样捕获URL的其余部分,使用斜杠和所有内容!