我有一個(gè)產(chǎn)品目錄,可以通過(guò)幾個(gè)不同的選擇和復(fù)選框元素進(jìn)行過(guò)濾。過(guò)濾器操作SearchController通過(guò) ajax 發(fā)布到用戶(hù)過(guò)濾器時(shí),結(jié)果會(huì)立即顯示。搜索詞/變量不會(huì)附加到 URL。我遇到了分頁(yè)問(wèn)題,因?yàn)槟J(rèn)的 Laravel 分頁(yè)會(huì)重新加載頁(yè)面,因此會(huì)丟失用戶(hù)已經(jīng)過(guò)濾的內(nèi)容。我將分頁(yè)更改為使用 ajax 以試圖迅速解決問(wèn)題。我的問(wèn)題是 ajax 分頁(yè)重新運(yùn)行SearchController以使集合抵消結(jié)果。然后再次重置搜索條件,因?yàn)檫^(guò)濾器沒(méi)有與分頁(yè) ajax 一起發(fā)布。我想在通過(guò)我的分頁(yè) ajax 調(diào)用時(shí)抵消原始集合。這個(gè)結(jié)果集是否存在并被重用?public function filter(Request $request, Stock $Stock){ // Enable query log DB::enableQueryLog(); $Stock = $Stock->newQuery(); if($request->has('model')) { $the_model = $request->model; $request->request->add([$the_model => 1]); } if ($request->has('car') && $request->input('car') == 'true') { $Stock->orWhere('car', 1); } if ($request->has('bike') && $request->input('bike') == 'true') { $Stock->orWhere('bike', 1); } if ($request->has('productTypes_chosen')) { $Stock->whereIn('productType', $request->productTypes_chosen); } if ($request->has('manufacturers_chosen')) { $Stock->whereIn('manufacturer', $request->manufacturers_chosen); } $Stock->where('show_website', 1); $stockItems = $Stock->get(); $stockItems = $Stock->paginate(15); if($request->ajax()) { $view = view('partials.filtered-results')->with(compact('stockItems')); $view = $view->render(); return $view; }}分頁(yè) AJAX$(function() { $('body').on('click', '.pagination a', function(e) { e.preventDefault(); var url = $(this).attr('href'); getStock(url); window.history.pushState("", "", url); }); function getStock(url) { $.ajax({ url : url }).done(function (data) { $('.machines').html(data); $('html, body').animate({ scrollTop: $('.machines').offset().top - 150 }, 'slow'); }).fail(function () { alert('Stocklist could not be loaded.'); }); }});
1 回答

慕妹3146593
TA貢獻(xiàn)1820條經(jīng)驗(yàn) 獲得超9個(gè)贊
我相信要解決您的問(wèn)題,您需要使用以下方法:
use Illuminate\Pagination\Paginator;
public function filter(Request $request, Stock $Stock)
{
// Your filters here
$page = $request->has('page') ?? 1;
$limit = $request->has('limit') ?? 15;
Paginator::currentPageResolver(function () use ($page) {
return $page;
});
$stockItems = $Stock->paginate($limit);
}
- 1 回答
- 0 關(guān)注
- 122 瀏覽
添加回答
舉報(bào)
0/150
提交
取消