Feature Overview
Capability map of UX DataTables and where each feature fits
This page helps you choose the right building blocks before you start coding.
Capability Map
| Capability | What it gives you | Primary entry point |
|---|---|---|
| Column modeling | Strongly-typed column definitions in PHP | Columns Overview |
| Client-side processing | Inline rows or Ajax-loaded datasets handled entirely in the browser | Client-side Processing |
| Server-side processing | Paging, ordering, and filtering on the backend | Server-Side Processing |
| Declarative filters | Filter popover with Doctrine conditions | Filters |
| Row actions & detail rows | Edit, delete, custom Ajax actions, collapsible detail templates | Action Column |
| Bulk actions | Checkbox selection and one PHP handler run over the selected or every matching row | Bulk Actions |
| DataTables extensions | Export, selection, responsiveness, scrolling, etc. | Extensions Overview |
| API Platform integration | Hydra response adaptation and auto Ajax wiring | API Platform |
| Mercure live updates | SSE-driven Ajax reload when data changes | Mercure |
| Inline editing | Edit rows via a modal with auto-generated Symfony Forms | Edit Modal |
| Ajax security | Route protection, CSRF mutations, entity voters | Securing Ajax Routes |
| Reusable table classes | Encapsulate all table logic in one class | AbstractDataTable |
| Code generation | Scaffold DataTable classes from Doctrine entities | Maker Command |
| Testing | Functional tests that send real Ajax requests to a table and assert on its rows | Testing |
| Live refresh | Reload a server-side table on a timer with poll() | Polling |
| Footer totals | Sums, averages, minimums, maximums, and counts over every matching row | Column Summaries |
| Empty state and clickable rows | Custom empty table, row classes, and row links | Row Presentation |
| User-built search | Grouped search conditions built by the user | SearchBuilder |
| Export | CSV, Excel, PDF, and print buttons | Buttons |
| Global table defaults | Configure every table once in PHP or YAML | Configuration |
Typical Architecture
- Build a
DataTableconfig or anAbstractDataTableclass. - Define columns and options.
- Pick a processing strategy: inline rows, Ajax-powered client-side, or server-side.
- Add filters, actions, and extensions only when needed.
- Protect Ajax routes before production.
Next Step
Use When To Use What or jump to Recipes for copy-paste setups. New to the bundle? Start with the Introduction, or explore every feature in the demo app.