如何配置路由连接以处理...
/users/{nameofuser_as_param}/{action}.json?limit_as_param=20&offset_as_param=20&order_as_param=created_at
在routes.php文件中,以便它调用我的控制器操作,如...
/users/{action}/{nameofuser_as_param}/{limit_as_param}/{offset_as_param}/{order_as_param}.json?
注意:我使用Cakephp 2.X
答案 0 :(得分:1)
处理......
/users/{nameofuser_as_param}/{action}.json
这很简单,in the docs。
假设路由文件中有parseExtensions的呼叫,则需要沿着这条线路的路线:
Router::connect(
'/users/:username/:action',
['controller' => 'users'],
[
'pass' => ['username'],
// 'username' => '[a-Z0-9]+' // optional param pattern
]
);
Router::connect
的第3个参数中的密钥用于指定应将哪个路由参数传递给控制器操作。在这种情况下,将传递用户名。
对于问题中的其他要求,简单access the get arguments的行动更有意义。 E.g:
public function view($user)
{
$defaults = [
'limit_as_param' => 0,
'offset_as_param' => 0,
'order_as_param' => ''
];
$args = array_intersect_key($this->request->query, $defaults) + $defaults;
...
}
在没有可能发生重大变化或黑客攻击的情况下,不可能使路由对get参数执行任何操作,因为在运行时它们是only passed the path以确定哪个是匹配路径。