glifery/crud-abstract-data-bundle
This Symfony bundle provides abstract data structures and CRUD scaffolding to cut boilerplate when building data-driven admin interfaces. It separates persistence from presentation, letting you define entities and reuse generic create, read, update, and delete logic across your application.
This is a Symfony 2-era bundle, not a Laravel package, so "getting started" means understanding its shape well enough to decide whether to port the idea rather than install it.
composer require glifery/crud-abstract-data-bundle will resolve on modern PHP only by luck — the constraint set was written for PHP 5.x and Symfony 2.x (~2.3/~2.7 era). Expect to pin it into a throwaway Symfony 2 sandbox if you genuinely want to read the source in context.AppKernel::registerBundles() and (if the README mentions any) import its service config under app/config/config.yml. There is no service provider, facade, or config publish step — nothing maps to Laravel idioms.src/. Those two are the entire conceptual payload: a manager that exposes create/read/update/delete, and a provider abstraction the manager delegates persistence to.In Laravel terms, the mental model is a service class with a CrudManager facade over a pluggable DataProvider contract, where Eloquent/DB is one possible driver.
The package is thin, so patterns are about wrapping what it gives you.
Concrete provider per aggregate. Implement the abstract provider against whatever storage you have. In a Laravel port this is a class implementing your own DataProviderInterface with find, findAll, save, delete, mapping to Eloquent calls. Keep the provider dumb — no validation, no authorization.
Manager as a service, not a base controller. In Symfony the bundle likely ships base controller helpers; in Laravel, inject the manager into a resource controller or a dedicated CrudService. Prefer the service so jobs, commands, and API routes can reuse it.
Wrap with Laravel's HTTP layer. Bind the manager inside a Route::resource controller: index/show use find/findAll, store/update use save, destroy uses delete. Validation belongs in FormRequests, not in the provider.
Driver swap pattern. The one genuinely useful idea: keep the provider contract narrow and register it against an interface in a service provider, so you can swap Doctrine→Eloquent, SQL→array/in-memory for tests, or cached provider for production without touching the manager.
Event hooks around the manager. If the bundle fires pre/post create/update/delete events (typical for this genre), mirror that with Laravel model events or a thin dispatcher around your service — don't try to reuse Symfony's EventDispatcher.
vendor/ and conflict with Laravel's own Symfony dependencies — do not attempt it.composer.json autoload mappings before trusting class names in the README; small 2015 bundles often drift.flush-equivalent — the manager layer above is thin and rarely the culprit.CrudManager over a DataProvider contract — into a small internal package or a app/Services/Crud directory. You'll get the abstraction the bundle was reaching for, with modern PHP, Eloquent, and your own tests, and none of the 2015 baggage.How can I help you explore Laravel packages today?