我有一個(gè)產(chǎn)品目錄,可以通過幾個(gè)不同的選擇和復(fù)選框元素進(jìn)行過濾。過濾器操作SearchController通過 ajax 發(fā)布到用戶過濾器時(shí),結(jié)果會立即顯示。搜索詞/變量不會附加到 URL。我遇到了分頁問題,因?yàn)槟J(rèn)的 Laravel 分頁會重新加載頁面,因此會丟失用戶已經(jīng)過濾的內(nèi)容。我將分頁更改為使用 ajax 以試圖迅速解決問題。我的問題是 ajax 分頁重新運(yùn)行SearchController以使集合抵消結(jié)果。然后再次重置搜索條件,因?yàn)檫^濾器沒有與分頁 ajax 一起發(fā)布。我想在通過我的分頁 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; }}分頁 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è)贊
我相信要解決您的問題,您需要使用以下方法:
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)注
- 133 瀏覽
添加回答
舉報(bào)
0/150
提交
取消