Průvodce stránkováním Laravel: Zachovat hodnoty řetězce dotazu
Při vytváření aplikace Laravel, která zobrazuje data se stránkováním, často potřebujete zachovat určité parametry dotazu napříč stránkami. Můžete mít například filtry jako ?sort=price or ?category=books které by měly zůstat v odkazech stránkování při navigaci uživatele. Laravel to usnadňuje dvěma užitečnými metodami: withQueryString() a appends().
Zachování všech aktuálních hodnot řetězce dotazu
Pokud chcete všechny parametrů dotazu aktuálního požadavku, které mají být zachovány v odkazech stránkování, můžete použít příkaz withQueryString() metoda. To je užitečné zejména v případě, že máte více filtrů a chcete je všechny přenést, aniž byste je museli zadávat ručně.
use App\Models\User; Route::get('/users', function () { $users = User::paginate(15)->withQueryString(); return view('users.index', compact('users'));});
Pokud je aktuální adresa URL:
/users?sort=name&role=admin
Vygenerované odkazy na stránkování budou vypadat takto:
/users?page=2&sort=name&role=admin
Laravel automaticky sloučí page parametr se všemi ostatními existujícími parametry.
Připojení specifických hodnot řetězce dotazu
Někdy nepotřebujete všechny parametry dotazu z požadavku, ale chcete přidat jen několik konkrétních. V takovém případě použijte příkaz appends() a předat pole dvojic klíč-hodnota.
use App\Models\User; Route::get('/users', function () { $users = User::paginate(15); $users->appends(['sort' => 'votes']); return view('users.index', compact('users'));});
Nyní bude každý odkaz na stránkování obsahovat ?sort=votes spolu se správným page hodnotu:
/users?page=2&sort=votes
Kdy použít jednotlivé metody
withQueryString(): Použijte, když chcete všechny automaticky zachovány stávající parametry požadavku.appends():Použijte, pokud chcete přidat nebo upravit pouze konkrétní parametry dotazu.
Obě metody pomáhají zachovat stav filtru a vyhledávání napříč stránkovanými výsledky, čímž zlepšují uživatelský komfort a zajišťují, že vybrané možnosti zůstanou při procházení stránek zachovány.