friendsofvictoire/filter-widget
A reusable PHP filter widget that adds configurable filtering controls to list and search-result views, helping users narrow data by multiple criteria through a clean, extensible API.
Architecture fit
The first finding is a category mismatch that should be resolved before any engineering time is spent. Despite being catalogued alongside Laravel/PHP packages, friendsofvictoire/filter-widget is a Symfony bundle (FriendsOfVictoire/WidgetFilterBundle) built for Victoire DCMS, a Symfony-based content management system. It integrates through Symfony's bundle registration and DI container, depends on Victoire's own widget abstraction layer (widget maps, slot/renderer conventions), Doctrine ORM for content querying, and Twig for presentation. None of these primitives map onto Laravel's service container, Eloquent, or Blade.
The practical consequence: the package is not consumable as a library inside a Laravel application. It is only usable by operating Victoire itself, which in turn pins the host application to the Symfony 2.8/3.x generation. Architecture fit for a Laravel stack is effectively zero.
What is potentially reusable is the concept, not the code: a widget that lets a non-technical editor configure a saved filter (taxonomy/attribute predicates) over a content listing, persisted as widget configuration and rendered server-side. That is a design worth borrowing; the implementation is not.
Integration feasibility
Technical risk
High, and concentrated in the dependency tree rather than the package's own code:
Key questions
Stack fit
None for a Laravel target. The package's host requirements (Symfony DI, Twig, Doctrine, Victoire widget contracts) are mutually exclusive with Laravel's runtime. The only stack on which it fits is a Victoire/Symfony 2.8–3.x installation, which we should not be standing up in 2024+.
Recommendation: do not integrate. Treat the repository as a design reference and reimplement the capability natively.
Migration path
saved_filters table (owner, target resource, JSON predicate set), a validation layer for allowed fields/operators (allowlist, not free-form), an Eloquent query-scope builder that applies predicates, and policy-gated CRUD. Roughly a one-to-two sprint feature, with no third-party dependency risk.Compatibility
PHP 5.6/7.0-era constraints and Symfony 2.8/3.x APIs. Incompatible with PHP 8.x and current Symfony. Confirming this is a 15-minute check of composer.json — worth doing once to close the question definitively rather than revisiting it.
Sequencing
Maintenance
Effectively unmaintainable. There is no upstream to patch security issues, no release cadence since 2016, and no maintainer response path. Any use implies forking and owning the code in perpetuity — including the EOL Symfony and Doctrine dependencies it drags along. The total cost of ownership vastly exceeds the cost of writing the feature ourselves.
Support
No vendor, no active community, no dependents to consult. Internal ramp-up would land entirely on whoever reverse-engineers the source. This is a single-point-of-failure knowledge risk for a feature that is, by scope, not difficult to build.
Scaling
The widget's output is a filtered content query rendered server-side per request. Expect the usual failure profile for editor-configured queries: no bound on predicate complexity, potential for expensive joins or unindexed column filters, and N+1 patterns around related content. There is no evidence of query caching or result memoisation in a 2016-era bundle, so any high-traffic deployment would require adding caching that the package does not provide. A native implementation lets us enforce an operator/field allowlist and cache keyed on filter ID — a meaningfully better scaling story for less work.
Failure modes
Ramp-up
High cost, low return. Engineers would need Victoire-specific context that has no transferable value elsewhere in the stack. By contrast, the native Laravel reimplementation is standard work for any mid-level engineer on the team and produces code we own and understand.
Bottom line: the health score (0.335) is accurate. This is an abandoned component of an abandoned CMS, mis-catalogued as a Laravel package. Recommend closing it as a dependency candidate and, at most, mining it for the editor-facing filter UX pattern.
How can I help you explore Laravel packages today?