添加自定义 CakePHP 路由
Adding a custom CakePHP Route
我如何配置路由连接来处理...
/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
to handle...
/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
的第三个参数中的传递键用于指定应将哪些路由参数传递给控制器操作。在这种情况下,将传递用户名。
对于问题中的其余要求,将操作简单地 access the get arguments 会更有意义。例如:
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 确定哪个是匹配路由。
我如何配置路由连接来处理...
/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
to handle...
/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
的第三个参数中的传递键用于指定应将哪些路由参数传递给控制器操作。在这种情况下,将传递用户名。
对于问题中的其余要求,将操作简单地 access the get arguments 会更有意义。例如:
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 确定哪个是匹配路由。