【问题标题】:add parameters to pagination为分页添加参数
【发布时间】:2019-10-28 05:49:33
【问题描述】:

进入一个 Laravel Lumen API 项目,我返回一个分页结果。

....
"next_page_url" is "http://example.com/something?pg=2"
....

如何向所有链接添加参数,这些参数包含在请求的 url 中?

示例: http://example.com/something?pg=1&color=red&limit=2

next_page_url 应如下所示: http://example.com/something?pg=2&color=red&limit=2

$queryStrings = Input::except('limit', 'order_by', 'order', 'page', 'count', 'current_page', 'last_page', 'next_page_url', 'per_page', 'previous_page_url', 'total', 'url', 'from', 'to', 'pg');
$limit = (Input::get('limit') ? Input::get('limit') : '10');
$order_by = (Input::get('order') ? Input::get('order') : 'id');
$order = (Input::get('order_by') ? Input::get('order_by') : 'asc');
$page = (Input::get('pg') ? Input::get('pg') : 1);

$query = DB::table('cars');

foreach ($queryStrings as $key => $value) {
    $query->where($key, '=', $value);
}

$query->select('id', 'car', 'color', 'active');
$query->orderBy($order_by, $order);

$paginated = $query->paginate($limit, ['*'], 'pg', $page);

return response()->json($paginated,200);

感谢您的帮助。

【问题讨论】:

    标签: laravel lumen


    【解决方案1】:

    您可以使用paginate() 方法返回的LengthAwarePaginator 中的appends() 方法。所以你可以简单地添加这一行:

    $paginated = $query->paginate($limit, ['*'], 'pg', $page);
    $paginated->appends(Input::all());
    
    return response()->json($paginated,200);
    

    这将获取传递的所有输入值并将它们附加到分页器生成的链接中。 appends() 方法会改变调用它的实例,这就是为什么您只需根据从 paginate() 获得的结果调用它。

    【讨论】:

    • 你在 appends 方法之后忘记了 links()
    • @Thamerbelfkih 在这种情况下不需要links(),因为分页被序列化为 JSON 响应。 links() 可用于生成实际 HTML 的演示目的,例如在 Blade 模板中使用时。
    • @Bogdan 你说得对,我想也许他会使用默认的 html 演示文稿
    • 你可以用request()->input()替换Input::all()
    • @Manojkiran.A 实际上你不能使用 request() 辅助函数,因为这是一个 Lumen 而不是 Laravel 的问题,而且 Lumen 没有 Laravel 拥有的所有辅助函数。 Input 和所有其他外观实际上在 Lumen 中默认禁用,我猜 OP 手动启用了它们。但是,您可以使用服务容器通过 app('request') 访问请求实例,而无需在 Lumen 中进行任何额外配置。
    猜你喜欢
    • 1970-01-01
    • 2012-01-18
    • 1970-01-01
    • 1970-01-01
    • 2013-05-18
    • 1970-01-01
    • 1970-01-01
    • 2011-04-22
    • 1970-01-01
    相关资源
    最近更新 更多