pentiminax / ux-datatables
DataTables.net integration for Symfony
Package info
github.com/pentiminax/ux-datatables
Type:symfony-bundle
pkg:composer/pentiminax/ux-datatables
v0.58.0
2026-06-13 14:15 UTC
Requires
- php: >=8.3
- symfony/config: ^7.0 || ^8.0
- symfony/dependency-injection: ^7.0 || ^8.0
- symfony/http-kernel: ^7.0 || ^8.0
- symfony/property-access: ^7.0 || ^8.0
- symfony/security-bundle: ^7.0 || ^8.0
- symfony/stimulus-bundle: ^2.0 || ^3.0
Requires (Dev)
- api-platform/core: ^3.0 || ^4.0
- doctrine/orm: ^3.0
- friendsofphp/php-cs-fixer: ^3.94
- phpunit/phpunit: ^11.5
- symfony/form: ^7.0 || ^8.0
- symfony/framework-bundle: ^7.0 || ^8.0
- symfony/maker-bundle: ^1.66
- symfony/mercure-bundle: ^0.4.2
- symfony/phpunit-bridge: ^7.0 || ^8.0
- symfony/property-info: ^7.0 || ^8.0
- symfony/translation: ^7.0 || ^8.0
- symfony/twig-bundle: ^7.0 || ^8.0
- symfony/var-dumper: ^7.0 || ^8.0
Suggests
- api-platform/core: To auto-detect columns from API Platform metadata.
- symfony/form: To enable inline edit modal with auto-generated forms.
- symfony/maker-bundle: To use the make:datatable command.
- symfony/mercure-bundle: To enable real-time DataTable updates via Mercure SSE.
- symfony/translation: To enable translation of DataTable column titles.
- symfony/twig-bundle: To render edit form and TwigColumn
Conflicts
- symfony/flex: <1.13
This package is auto-updated.
Last update: 2026-06-16 10:39:37 UTC
README
UX DataTables is a Symfony bundle integrating the DataTables library in Symfony applications.
Requirements
- PHP 8.3 or higher
- Symfony StimulusBundle (installed through Symfony UX)
- Composer
Installation
Install the library via Composer:
composer require pentiminax/ux-datatables
Usage
1. Declare a DataTable
use App\Entity\User; use Pentiminax\UX\DataTables\Attribute\AsDataTable; use Pentiminax\UX\DataTables\Column\BooleanColumn; use Pentiminax\UX\DataTables\Column\DateColumn; use Pentiminax\UX\DataTables\Column\MoneyColumn; use Pentiminax\UX\DataTables\Column\NumberColumn; use Pentiminax\UX\DataTables\Column\TextColumn; use Pentiminax\UX\DataTables\Model\AbstractDataTable; #[AsDataTable(User::class)] final class UserDataTable extends AbstractDataTable { public function configureColumns(): iterable { return [ NumberColumn::new('id', 'ID'), TextColumn::new('firstName', 'First name'), TextColumn::new('email', 'Email'), DateColumn::new('createdAt', 'Created at'), ]; } }
Column variants are configured fluently after new():
TextColumn::new('name')->utf8(); TextColumn::new('content')->html()->utf8(); NumberColumn::new('price')->formatted(); MoneyColumn::new('price')->currency('EUR')->storedAsCents(); BooleanColumn::new('active')->renderAsSwitch(); TextColumn::new('internalCode')->disableColumnControl();
disableColumnControl() removes all ColumnControl controls for the column without disabling
DataTables search processing.
2. Wire it in a controller
#[Route('/users', name: 'app_users')] public function index(UserDataTable $table, Request $request): Response { $table->handleRequest($request); if ($table->isRequestHandled()) { return $table->getResponse(); } return $this->render('user/index.html.twig', [ 'table' => $table, ]); }
3. Render in Twig
{{ render_datatable(table) }}
Tip: run
php bin/console make:datatableto scaffold a DataTable class from any Doctrine entity.