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

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

Declare the table. Ship the grid.

UX DataTables wires DataTables.net into Symfony. Columns, filters, and row actions are declared in a PHP class; the bundle ships the Stimulus controller, the Ajax endpoints, and the Twig function that renders them.

Build your first table
composer require pentiminax/ux-datatables
A sample orders table. Column headers sort the rows.
ReferenceCustomerTotalStatus
#1048Ada Lovelace€128.00Paid
#1049Grace Hopper€64.50Review
#1050Alan Turing€312.20Shipped
#1051Katherine Johnson€89.90Paid
Four columns, four types. The header is the only control you need.

Where the rows come from

The column is the unit

A column knows its own type, so it knows how to render, sort, and search itself. Money formats with its currency, a choice renders its enum label, a date follows its format — and the same declaration drives the Doctrine query behind server-side processing.

Thirteen column types ship with the bundle, from Text to Action. The columns overview compares them side by side.

#[AsDataTable(name: 'orders')]
class OrderTable extends AbstractDataTable
{
    public function configureColumns(): iterable
    {
        yield TextColumn::new('reference');
        yield TextColumn::new('customer.name')->title('Customer');
        yield MoneyColumn::new('total')->currency('EUR');
        yield ChoiceColumn::new('status')->choices(Status::class);
    }
}

Find your way in

Getting started

Install the bundle, render a first table, and secure the Ajax routes it exposes.

Features

What the bundle does, and which processing mode a given table should use.

Recipes

Complete tables you can paste into a project — entity, table class, controller, template.

Guide

Configuration, options, styling, filters, and the two processing modes in depth.

Columns

Every column type, its options, and what it renders on the client.

Extensions

The official DataTables.net extensions the bundle wires up for you.

Integrations

API Platform column discovery and live updates over Mercure.

Reference

Classes, attributes, enums, and the Ajax contract, described exactly.