【问题标题】:Customise number of links shown in Laravel pagination on query results自定义 Laravel 分页在查询结果中显示的链接数量
【发布时间】:2021-08-20 12:49:17
【问题描述】:

我在应用程序的查询中使用 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。

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

【问题讨论】:

    标签: php laravel pagination nuxt.js laravel-pagination


    【解决方案1】:

    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)
        ]);
    }
    

    【讨论】:

    • 好吧,不过,如前所述,它是一个“Laravel Rest API”,所以数据被发送到我的前端,它内置在 Nuxt JS 中,并使用 axios 在前端之间发出请求- end 和 back-end,所以没有刀片文件。
    • 哦,您介意在您的问题中添加 NuxtJS 标签来强调这一点吗?
    • 也许你可以使用`$model->paginate()->getUrlRange()`
    • getUrlRange literatly 返回一个包含 10 个项目的数组,其中 getUrlRange(1, 10) 没有其他数据,例如第一页,更重要的是,我的数据库中的数据。
    • 你可能不得不做$paginator = $model->paginate(); array_merge($paginator, [ 'pages' => $paginator->getUrlRange(1, 10) ]);
    猜你喜欢
    • 2018-11-01
    • 1970-01-01
    • 2015-02-23
    • 1970-01-01
    • 2017-09-21
    • 2014-10-23
    • 1970-01-01
    • 2020-12-31
    • 2018-08-18
    相关资源
    最近更新 更多