首页 > 解决方案 > Laravel 数组分页

问题描述

我正在对研究页面的结果进行分页。代码有两页。

  1. 指向带有搜索表单的页面的索引页面。

  2. 第二页是应该显示输出的结果页。我希望结果显示在页面中。我的代码是:在搜索功能输出这是代码

$final_list = $this->paginate($final_list,5);

return view('results',['list' => $final_list]);

分页功能是:

public function paginate($items, $perPage = 5,  $page = null, $options = [])

{

   $page =  $page ?: (Paginator::resolveCurrentPage() ?: 1);

   $items = $items instanceof Collection ? $items : Collection::make($items);

   return new LengthAwarePaginator($items->forPage($page, $perPage), $items->count(), $perPage, page, 
   $options);

}

在结果页面中,我显示数据并添加{!! $list->links() !!}获取页面。

代码显示第一页的输出。我面临的问题是,当我单击第二个页面或任何其他页面时,它会将我定向到索引页面,在显示该页面的结果之前,我必须再次填写搜索表单。我不明白这段代码有什么问题。请你帮助我好吗。谢谢你

标签: laravelpagination

解决方案


您需要将搜索过滤器数据附加到主数据数组。

$detail_data->appends(['keyword' => $keyword]);

我分享控制器的示例代码

    $keyword = $request->keyword;
    $deals = Deal::join('category','category.id','=','deals.deal_category_id')
                ->join('users','users.id','=','deals.user_id')
                ->select('deals.*', 'category.cat_name', 'users.name AS username', 'users.profile_photo_path')
                ->where('deal_isApproved', '=', 'Approved');
    $deals->where(function($query) use ($keyword) {
            $query->where('deal_title', 'like', '%'.$keyword.'%')
                ->orWhere('category.cat_name', 'like', '%'.$keyword.'%');
    });
    $detail_data = $deals->paginate(20);
    $detail_data->appends(['keyword' => $keyword]);

我刀片模板文件

{{ $detail_data->links() }}

推荐阅读