【问题标题】:Laravel 5 pagination linksLaravel 5 分页链接
【发布时间】:2016-11-17 06:47:19
【问题描述】:

我有一个 laravel 5 应用程序,我正在尝试对某些结果进行分页(结果数组不是集合)。 这是我的代码:

$paginator = new LengthAwarePaginator(
 $l_aResponse['body'],
 count($l_aResponse['body']),
 '2',
 Paginator::resolveCurrentPage(),
 ['path' => Paginator::resolveCurrentPath()]
);
return str_replace('/?', '?', $paginator->render());

我的问题是:有没有办法修改在页面 URL 中设置“页面”参数的方式? EG:我不想要这种格式:http://localsite/articles?page=3 但我想要http://localsite/articles/3

我会很感激任何答案。谢谢!

【问题讨论】:

标签: php laravel url parameters pagination


【解决方案1】:

LengthAwarePaginator 类的__construct() 函数有几个参数:

  • $items
  • $总计
  • 每页$
  • $currentPage = null
  • 数组 $options = []

如你所见,第四个参数代表当前页面。

因此,您可以使用从 url 的最后一个参数中检索到的自定义所需的当前页面。一个例子是:

//  http://localsite/articles/3

$currentPage = ... // Get parameter from url

$paginator = new LengthAwarePaginator(
    $l_aResponse['body'],
    count($l_aResponse['body']),
    '2',
    $currentPage, // Current page as fourth parameter
    ['path' => Paginator::resolveCurrentPath()]
);

return str_replace('/?', '?', $paginator->render());

尚未对此进行测试。希望对你有帮助:)

【讨论】:

  • 感谢您的解决方案!但是,这将不允许我们修改分页链接,并且这些链接在 URL 中仍然会有 ?page=1 等等。我想通过某种参数把它去掉,我不想通过 JS 或其他方法干扰和修改这些链接。
  • 我已经认为这会发生。也许你应该玩'path' => Paginator::resolveCurrentPath()。或者,您可以创建一个新的分页器类来扩展当前的 LenfthAwarePaginator 类并覆盖一些方法,例如 render()
猜你喜欢
  • 2015-11-07
  • 2015-06-07
  • 2015-06-05
  • 2017-01-29
  • 1970-01-01
  • 2017-11-30
  • 2016-02-03
  • 1970-01-01
  • 2014-02-08
相关资源
最近更新 更多