使用分页器进行视图模板导航
Using paginator for view template navigation
是否可以劫持分页器以进行视图模板导航(即提供 next/prev 个 URL)?
我目前有一个每页 1 行的分页器。我想修改 URL 以指向当前视图,但使用行 PK 而不是 :page querystring 参数。
- 首先,访问model/view/5
在分页器 URls 中:
- 下一个 link,将转到 model/view/6
- 上一个 link,会转到 model/view/4
- 分页 link 秒,将转到 model/view/x
这可能吗?分页URL可以这样重写吗?
这应该是可能的,是的。首先,您需要一个适当的路由,该路由使用名为 page
的路由元素,例如:
Router::connect('/model/view/:page', [
'controller' => 'Models',
'action' => 'view'
]);
这是必需的,因为分页助手将在生成链接时通过 URL 数组中名为 page
的键设置页码。如果路由中没有具有该名称的元素,则该值将以查询字符串结尾。同样重要的是不要将 page
元素标记为要传递,否则该值将滑入分页助手生成的 URL 数组中,并且不再匹配您的路线。
您需要做的另一件事是确保分页器组件可以访问请求的页码。默认情况下,组件从请求查询字符串变量或分页选项中读取值。因此,例如,在控制器中,您可以执行以下操作:
$page = $this->request->param('page');
if ($page !== null) {
$this->paginate['page'] = $page;
// or
$this->request->query['page'] = $page;
}
// ...
$result = $this->paginate();
对于更枯燥的内容,您可以将其移动到自定义组件或扩展的分页器组件中。
另见
是否可以劫持分页器以进行视图模板导航(即提供 next/prev 个 URL)?
我目前有一个每页 1 行的分页器。我想修改 URL 以指向当前视图,但使用行 PK 而不是 :page querystring 参数。
- 首先,访问model/view/5
在分页器 URls 中:
- 下一个 link,将转到 model/view/6
- 上一个 link,会转到 model/view/4
- 分页 link 秒,将转到 model/view/x
这可能吗?分页URL可以这样重写吗?
这应该是可能的,是的。首先,您需要一个适当的路由,该路由使用名为 page
的路由元素,例如:
Router::connect('/model/view/:page', [
'controller' => 'Models',
'action' => 'view'
]);
这是必需的,因为分页助手将在生成链接时通过 URL 数组中名为 page
的键设置页码。如果路由中没有具有该名称的元素,则该值将以查询字符串结尾。同样重要的是不要将 page
元素标记为要传递,否则该值将滑入分页助手生成的 URL 数组中,并且不再匹配您的路线。
您需要做的另一件事是确保分页器组件可以访问请求的页码。默认情况下,组件从请求查询字符串变量或分页选项中读取值。因此,例如,在控制器中,您可以执行以下操作:
$page = $this->request->param('page');
if ($page !== null) {
$this->paginate['page'] = $page;
// or
$this->request->query['page'] = $page;
}
// ...
$result = $this->paginate();
对于更枯燥的内容,您可以将其移动到自定义组件或扩展的分页器组件中。
另见