gloomy/pager-bundle
gloomy/pager-bundle provides lightweight, reusable pagination for PHP applications. Split large result sets into manageable pages, configure page sizes, and generate clean pager links for easy integration into controllers and templates. Simple setup and flexible pager output make it practical for Sy...
Build vs. buy on filterable admin lists. The package bundles the three things every back-office CRUD screen needs — pagination, a filter/sort abstraction, and list scaffolding. Any roadmap item of the form "give ops/support a searchable, sortable table" is really a build-vs-buy question, and this is a useful scoping reference for what "advanced filtering" actually costs. Note the answer for a Laravel roadmap is buy — Filament, Nova, or Spatie Query Builder — not adopt this.
Defining what "advanced filtering" means in acceptance criteria. Compound conditions (AND/OR), per-field operators (contains, between, in), and multi-column sorting are chronically underestimated in estimation and chronically underspecified in tickets. This package is a checklist: if the story says "add filters," this is the granularity the acceptance criteria should reach.
Filter model architecture — the genuinely transferable idea. Its core design is one filter/sort definition that resolves uniformly against either an array or an entity/query builder. That duality means the same filter spec drives in-memory test fixtures and live database queries, so list-layer logic becomes unit-testable without a database. That is a real testability and velocity argument, and it should be captured in our internal pattern regardless of vendor choice.
Dependency policy and "own your dependencies" calibration. 10 stars, 0 dependents, single maintainer, mid-range score. This is a clean worked example for the dependency-vetting criteria we apply elsewhere: adoption here is not a library decision, it is a fork-ownership and staffing decision.
Platform-fit / framework-mismatch triage. Despite being filed under PHP/Laravel tooling, this is a Symfony bundle — Symfony bundle registration, DI container, Twig rendering, Symfony Request. Laravel has no shim for any of that. So it supports a no on the dependency and a yes on borrowing the pattern, with the maintained Laravel equivalents doing the actual work.
Where filtering belongs in the stack. If the requirement is a rich data grid in a JS frontend, server-side PHP filtering is the wrong layer — it belongs in the API contract. Useful for killing a "build a PHP filter engine" workstream before it starts.
Consider it only when all of these hold:
Look elsewhere when:
spatie/laravel-query-builder plus native pagination.To executives: This is a small, single-maintainer open-source library for building filterable admin tables, and it targets Symfony rather than our Laravel stack. We are not recommending it as a dependency — the cost of adopting it (owning a fork, patching it ourselves, no community, no security response) exceeds the cost of using a maintained tool we already have access to. We are recommending we borrow its filtering model, which cleanly separates filter definitions from the data source so the same filters work in tests and in production. That gets us better-tested admin screens at roughly the same effort, with no new vendor risk and no added maintenance burden.
To engineering: Treat it as a design reference, not a dependency. The transferable pattern is a filter/sort abstraction that resolves against either an array or a query builder — that is what makes list-layer logic unit-testable without a database. Concrete recommendation: implement our filter definitions in the idiom of whatever maintained tool we've already chosen (Filament or Spatie Query Builder for Laravel), using this package's Array/QueryBuilder duality as the model. If someone wants to evaluate the bundle directly, scope it to a one-to-two-day spike — confirm supported PHP/Symfony versions, check whether filter names are allowlisted or reach the query builder raw, and verify a test suite exists — then discard it and close the question. Do not let this block a roadmap item; it is a nice-to-have abstraction with no deadline.
How can I help you explore Laravel packages today?