laravel - Laravel 数组分页
问题描述
我正在对研究页面的结果进行分页。代码有两页。
指向带有搜索表单的页面的索引页面。
第二页是应该显示输出的结果页。我希望结果显示在页面中。我的代码是:在搜索功能输出这是代码
$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() !!}
获取页面。
代码显示第一页的输出。我面临的问题是,当我单击第二个页面或任何其他页面时,它会将我定向到索引页面,在显示该页面的结果之前,我必须再次填写搜索表单。我不明白这段代码有什么问题。请你帮助我好吗。谢谢你
解决方案
您需要将搜索过滤器数据附加到主数据数组。
$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() }}