NovinkaZverejnili sme 50+ Laravel balíkov ako open source
Custom AI apps, agents and automation — Roundly ConsultingRoundly
Všetky balíky

Pridajte HasPageSize do FormRequestu, ktorý tak zvaliduje a určí veľkosť stránky:

use Illuminate\Foundation\Http\FormRequest;
use RoundlyConsulting\QueryBuilder\Concerns\HasPageSize;

final class ListPostsRequest extends FormRequest
{
    use HasPageSize;

    public function rules(): array
    {
        return [
            ...$this->pageSizeRules(),
            // your other rules
        ];
    }
}
$posts = QueryBuilder::for(Post::class)
    ->allowedFilters('status')
    ->paginate($request->perPage());

Čo trait poskytuje

MetódaVracia
pageSizeRules()['per_page' => ['nullable', 'integer', 'min:1', 'max:100']] — zlúčte do rules().
perPage()Požadovanú veľkosť obmedzenú na max_per_page; default_per_page, ak chýba alebo je neplatná.
pageName()Nakonfigurovaný pagination.page_name.

per_page nad max_per_page, pod 1 alebo necelé číslo vráti 422. perPage() navyše hodnotu pevne obmedzí na max_per_page a pri chýbajúcej či neplatnej hodnote použije default_per_page — ako druhá línia obrany.

Názov parametra stránky

paginate() a simplePaginate() na QueryBuilder automaticky dostanú nakonfigurovaný pagination.page_name, takže premenovanie v konfigurácii platí v requeste aj vo vygenerovaných odkazoch. Na prepísanie odovzdajte pageName: sami, alebo si názov prečítajte z requestu, keď paginator skladáte ručne:

// config/query-builder.php
'pagination' => [
    'page_name' => 'p',
    // ...
],

// QueryBuilder applies it: ?p=2, and the paginator links use ?p=
QueryBuilder::for(Post::class)->paginate($request->perPage());

// A paginator you build yourself
Post::query()->paginate($request->perPage(), pageName: $request->pageName());

Výslovne odovzdaný názov stránky — ako pageName: alebo tretí pozičný argument — má vždy prednosť. Cursor stránkovanie je mimo rozsahu.

Prejavte lásku k open source

Tento balík je zadarmo pod licenciou MIT. Ak vám šetrí čas, jednorazový príspevok alebo členstvo na Patreone nám pomôže ho ďalej udržiavať, testovať a dokumentovať.

Ďalšie spôsoby podpory vrátane kryptomien

Odoslaním daru súhlasíte s našimi podmienkami prijímania darov.

Chcete to zabudovať do svojho produktu?

Naše balíky integrujeme do zákazkových Laravel a AI riešení. Napíšte nám, na čom pracujete, a ozveme sa do 48 hodín.