使用paginator进行视图模板导航

时间:2017-01-30 16:37:17

标签: cakephp pagination url-routing cakephp-3.x

对于视图模板导航(即提供下一个/上一个URL),分页器是否可以被高压?

我目前有一个每页1行的分页器。我想修改URL以指向当前视图,但使用行PK而不是:page querystring参数。

  1. 首先,访问model / view / 5
  2. 在分页器URls中:

    • 下一个链接,将转到model / view / 6
    • 上一个链接,将转到model / view / 4
    • 分页链接,将转到model / view / x
  3. 这可能吗?可以用这种方式重写分页URL吗?

1 个答案:

答案 0 :(得分:0)

那应该是可能的,是的。首先,您需要一个使用名为page的路径元素的适当路线,例如:

Router::connect('/model/view/:page', [
    'controller' => 'Models',
    'action' => 'view'
]);

这是必需的,因为在生成链接时,paginator helper将通过URL数组中名为page的键设置页码。如果路径中没有具有该名称的元素,则该值将以查询字符串结尾。同样重要的是不要将page元素标记为要传递,否则该值将滑入分页器助手生成的URL数组中,并且不再与您的路由匹配。

您需要做的另一件事是确保paginator组件可以访问所请求的页码。默认情况下,组件从请求查询字符串变量或分页选项中读取值。因此,在控制器中,您可以执行以下操作:

$page = $this->request->param('page');
if ($page !== null) {
    $this->paginate['page'] = $page;
    // or
    $this->request->query['page'] = $page;
}

// ...

$result = $this->paginate();

对于更干燥的东西,你可以在自定义组件或扩展的分页器组件中移动它。

另见