Laravel 分页:增加 URL 参数

Laravel 提供了方便的分页方法。当你读取数据使用 paginate 方法:

$models = Model::paginate();

就可以在视图里:

{{ $models->render() }}
// 或者
{{ $models->links() }}

既可以得到如下:

微信图片_20190328180306.png

如果你需要需要增加一个或者多个参数呢?如增加:

http://learnku.test/blog/articles?page=2&view_from=topic_list&ajax=false

这时候你可以使用 appends 方法:

{{ $models->appends(Request::except('page', '_pjax'))->render() }}
// 或者
{!! $models->appends(Request::except('page', '_pjax'))->render() !!}

// 或者使用 `links`

{{ $products->appends(\Request::except('page', '_pjax'))->links() }}
// 或者
{!! $products->appends(\Request::except('page', '_pjax'))->links() !!}

注意:Request::except 是获取到除了 page 和 _pjax 以为的所有参数数组。

linksrender 的区别

通过查看源码:vendor/laravel/framework/src/Illuminate/Pagination/LengthAwarePaginator.php

/**
 * Render the paginator using the given view.
 *
 * @param  string|null  $view
 * @param  array  $data
 * @return \Illuminate\Support\HtmlString
 */
public function links($view = null, $data = [])
{
    return $this->render($view, $data);
}

/**
 * Render the paginator using the given view.
 *
 * @param  string|null  $view
 * @param  array  $data
 * @return \Illuminate\Support\HtmlString
 */
public function render($view = null, $data = [])
{
    return new HtmlString(static::viewFactory()->make($view ?: static::$defaultView, array_merge($data, [
        'paginator' => $this,
        'elements' => $this->elements(),
    ]))->render());
}

可以看出来 links 方法最终还是会调用 render 方法

讨论数量: 0

请勿发布不友善或者负能量的内容。与人为善,比聪明更重要!