Type to search columns, filters, options, and extensions.

↑↓ to navigate · Enter to open · Esc to close

Documentation

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

CapabilityWhat it gives youPrimary entry point
Column modelingStrongly-typed column definitions in PHPColumns Overview
Client-side processingInline rows or Ajax-loaded datasets handled entirely in the browserClient-side Processing
Server-side processingPaging, ordering, and filtering on the backendServer-Side Processing
Declarative filtersFilter popover with Doctrine conditionsFilters
Row actions & detail rowsEdit, delete, custom Ajax actions, collapsible detail templatesAction Column
Bulk actionsCheckbox selection and one PHP handler run over the selected or every matching rowBulk Actions
DataTables extensionsExport, selection, responsiveness, scrolling, etc.Extensions Overview
API Platform integrationHydra response adaptation and auto Ajax wiringAPI Platform
Mercure live updatesSSE-driven Ajax reload when data changesMercure
Inline editingEdit rows via a modal with auto-generated Symfony FormsEdit Modal
Ajax securityRoute protection, CSRF mutations, entity votersSecuring Ajax Routes
Reusable table classesEncapsulate all table logic in one classAbstractDataTable
Code generationScaffold DataTable classes from Doctrine entitiesMaker Command
TestingFunctional tests that send real Ajax requests to a table and assert on its rowsTesting
Live refreshReload a server-side table on a timer with poll()Polling
Footer totalsSums, averages, minimums, maximums, and counts over every matching rowColumn Summaries
Empty state and clickable rowsCustom empty table, row classes, and row linksRow Presentation
User-built searchGrouped search conditions built by the userSearchBuilder
ExportCSV, Excel, PDF, and print buttonsButtons
Global table defaultsConfigure every table once in PHP or YAMLConfiguration

Typical Architecture

  1. Build a DataTable config or an AbstractDataTable class.
  2. Define columns and options.
  3. Pick a processing strategy: inline rows, Ajax-powered client-side, or server-side.
  4. Add filters, actions, and extensions only when needed.
  5. 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.