自定义 Laravel 分页中在查询结果中显示的链接数量

问题描述

我在我的应用程序中的查询中使用 Laravel 的 Pagination 功能,该功能作为 JSON 响应返回到我的前端(这是一个 Laravel Rest API)

/**
 * Applications
 */
public function getApplications()
{

    $applications = Application::orderBy('created_at','desc')
                               ->paginate(25);

    foreach ($applications as $key => $applicant) {
      try {
        $applications[$key]['data'] = json_decode($applicant['data']);
      } catch (\Exception $e) { }
    }

    return $applications;

}

/**
 * All applications
 *
 * @param  Request  $request
 */
public function applications(Request $request)
{

    try {

      // daily graphs
      $applications = $this->getApplications();

      // not set or nothing to report
      if (!$applications) {
        return response()->json([
          'success' => false,'msg' => 'No applications found,check back in a few minutes',],422);
      }

      // return the response
      return response()->json([
        'success' => true,'msg' => 'Icicle applications','applications' => $applications ?? null
      ],200);

    } catch (\Exception $e) {

      // return default template
      return response()->json([
        'success' => false,'msg' => 'We were unable to load applications right Now',422);

    }

}

但是,页面显示链接数从 1 开始,然后继续到 10,这对我来说太多了,我想减少它们以显示更少的链接,例如,从 1 到 5。

我似乎无法在此处找到有关如何配置分页器的任何文档,而且由于它不是视图,我该如何减少链接?我是否缺少一些配置?

pagination example

解决方法

The documentation 建议在您的刀片模板中执行此操作:

{{ $users->onEachSide(5)->links() }}

/**
 * Applications
 */
public function getApplications()
{

    $paginator = Application::orderBy('created_at','desc')
                               ->paginate(25);

    return array_merge($paginator,[
        'pages' => $paginator->getUrlRange(1,10)
    ]);
}