最初在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()方法。这是否意味着每次在控制器中定义方法/操作时,都必须为应用程序中的其他位置的每个参数定义单独的路由? 任何人都可以用简单的方式向我解释这是如何工作的。只需调用一个函数就可以做到这一切似乎很麻烦。
答案 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的其余部分,使用斜杠和所有内容!