Introduction
UX DataTables is a Symfony bundle that integrates the powerful DataTables JavaScript library into your Symfony applications with a clean PHP API.
What is DataTables?
DataTables is a highly flexible tool for creating interactive HTML tables with features like:
- Pagination
- Instant search and filtering
- Multi-column sorting
- Ajax data loading
- Server-side processing
- Export to CSV, Excel, PDF
Why UX DataTables?
This bundle provides a Symfony-native way to work with DataTables:
PHP-First Configuration
Configure your tables entirely in PHP with a fluent builder API:
$table = $builder
->createDataTable('users')
->columns([
TextColumn::new('name', 'Name'),
NumberColumn::new('age', 'Age'),
])
->pageLength(25)
->searching(true);
Stimulus Integration
Built on Symfony UX StimulusBundle, the bundle automatically handles JavaScript initialization through Stimulus controllers.
Twig Helper
Render tables with a simple Twig function:
{{ render_datatable(table) }}
Doctrine Integration
Use the #[AsDataTable] attribute to create tables backed by Doctrine entities with automatic server-side processing:
#[AsDataTable(User::class)]
final class UsersDataTable extends AbstractDataTable
{
public function configureColumns(): iterable
{
yield TextColumn::new('id', 'ID');
yield TextColumn::new('email', 'Email');
}
}
Architecture Overview
┌─────────────────────────────────────────────────────┐
│ Controller │
│ ┌───────────────────────────────────────────────┐ │
│ │ DataTableBuilderInterface │ │
│ └───────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────┐
│ DataTable │
│ ┌─────────┐ ┌─────────┐ ┌────────────────────┐ │
│ │ Columns │ │ Options │ │ Extensions │ │
│ └─────────┘ └─────────┘ └────────────────────┘ │
└─────────────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────┐
│ Twig Template │
│ {{ render_datatable(table) }} │
└─────────────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────┐
│ Stimulus Controller │
│ (Auto-initialized by Symfony UX) │
└─────────────────────────────────────────────────────┘