在Laravel分页中移除URL的查询字符串

3
我正在使用Laravel分页来对我的产品进行分页。默认情况下,它会给我一个类似于这样的URL:
http://example.test/search?page=3

但我想要像这样的东西。
http://example.test/search/page/3

如果可能的话
http://example.test/search

在每个页面上

这是我现在的做法,但没有给我任何结果

{{  $books->appends(Request::except('page'))->links() }}

我也尝试了这样做

$books = Book::paginate(10);
$books->withPath('/search');

但仍然没有结果。

这个回答解决了你的问题吗?Laravel分页美化URL - Calos
作为 Laravel 分页,它会创建查询字符串 ?page=3。如果你想使用 /page/1 这样的 URL,那么你需要为此创建路由,并手动处理分页。 - Kamlesh Paul
你能详细解释一下吗? - xenex-media
1个回答

3
您可以使用此功能在blade.php中使用link()生成自定义链接。
@php
    $links = $books->links();
    $pattern = $replacement = array();
    $pattern[] = '/'.$books->getCurrentPage().'\?page=/';
    $replacement[] = '';
    $customLinks =  preg_replace($pattern, $replacement, $links);
    echo $customLinks;
@endphp

此外,您还可以使用来自GitHub上的spatie团队的名为laravel-paginateroute的包。


然后看看这篇博客https://stillat.com/blog/2014/07/28/laravel-paginator-pretty-urls。它会对你有所帮助。 - nayeemdev

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接