waldo/datatable-bundle
Waldo Datatable Bundle is a Laravel/PHP package for building and rendering data tables with sorting, filtering, pagination, and reusable table views. It helps developers add searchable, manageable datatables to admin panels and dashboards.
This is a Symfony2 bundle, not a Laravel package, so treat the repo as a reference implementation and port the patterns into Laravel (usually yajra/laravel-datatables or a hand-rolled query builder). If you genuinely need it in a legacy Symfony2 app:
composer require waldo/datatable-bundle and register Waldo\DatatableBundle\WaldoDatatableBundle in AppKernel.php.waldo_datatable routes) in app/config/routing.yml — this exposes the Ajax endpoint that DataTables talks to.waldo_datatable (template, default theme, JS/CSS asset paths).@Datatable) or define it in YAML — start with a single entity, no joins. User is the canonical first case.Where to look first: the bundle's Datatable service and its config/annotation parsing (Resources/config), then the Twig template, because that dictates the JSON contract the JS expects. For a Laravel dev, the fastest path is to read the annotation-to-DQL translation, then mirror it in a yajra Datatables::of() pipeline.
draw, start, length, search[value], order[0][column], order[0][dir]. The bundle's controller translates these into LIMIT/OFFSET/ORDER BY/WHERE on a DQL query and returns {draw, recordsTotal, recordsFiltered, data}. If you port to Laravel, replicate exactly this JSON shape or the JS will silently render empty rows.WHERE conditions in config for scoping (e.g. tenant, soft-deleted), and let DataTables' global search handle the rest.->addColumn()/->editColumn(), renderer → closure, joins → ->join()/with(). The DataTables JS side is identical, which is the real value of reading this repo.draw isn't echoed back, or recordsTotal/recordsFiltered are wrong, DataTables paginates incorrectly. Log the raw response while debugging.ORDER BY directly from the request; whitelist sortable columns. The bundle does some of this, but any custom renderer/config you add can reintroduce risk.app/console cache:clear when columns "disappear."waldo_datatable config, swap the theme, or subclass the Datatable service to customize query building. For Laravel, treat these as the seams to replicate (->setRowClass(), custom rawColumns, response transformers).How can I help you explore Laravel packages today?