hrr / t3-datatable
T3 DataTable – a server-side searchable, sortable, paginated DataTable extension for TYPO3 backend modules, built on the DataTables protocol with Doctrine DBAL.
Package info
github.com/himanshuramavat/t3_datatable
Type:typo3-cms-extension
pkg:composer/hrr/t3-datatable
Requires
- php: >=8.2 <9
- typo3/cms-backend: ^13.4 || ^14.3
- typo3/cms-core: ^13.4 || ^14.3
- typo3/cms-fluid: ^13.4 || ^14.3
Requires (Dev)
- friendsofphp/php-cs-fixer: ^3.94
- phpstan/phpstan: ^2.1
- phpunit/phpunit: ^11.5
- typo3/cms-beuser: ^13.4 || ^14.3
- typo3/cms-install: ^13.4 || ^14.3
- typo3/testing-framework: ^8.2 || ^9.0
Replaces
- typo3-ter/t3-datatable: 2.0.0
This package is auto-updated.
Last update: 2026-08-11 05:11:12 UTC
README
T3 DataTable
Server-side searchable, sortable and paginated data grids for TYPO3 backend modules.
T3 DataTable brings server-side data grids to custom TYPO3 backend modules
without writing custom AJAX endpoints, SQL boilerplate, or inline JavaScript.
It complements the core Web → List module (DatabaseRecordList); it does
not replace TCA record lists on a page.
Register a grid, load the ES module, and render a table with data-*
attributes. The extension handles request parsing, Doctrine DBAL queries,
column allowlisting, and JSON responses compatible with the
DataTables server-side protocol.
Features
- Server-side search, sort, and pagination over any database table
- Simple grid API: implement
GridInterface, tag it, done - Column allowlisting before any search or sort touches the query
- CSP-safe JavaScript bootstrap (no inline scripts)
- TYPO3-native backend module shell (
ModuleTemplate, card UI) - One shared AJAX endpoint (
t3datatable_data) for all grids - PHPUnit, PHPStan, and PHP-CS-Fixer wired in
- Standard TYPO3 documentation in
Documentation/
Installation
Install via Composer:
composer require hrr/t3-datatable
Or install the extension from the TYPO3 Extension Repository.
Then activate T3 DataTable in Admin Tools → Extensions.
Demo
After installation open
Web → T3 DataTable
to see a working server-side grid using the pages table.
(On TYPO3 14 the module appears under Content → T3 DataTable.)
Quick start
-
Implement
GridInterfacein your extension and tag the service witht3datatable.grid(or rely on_instanceofauto-tagging). -
Load the ES module in your backend controller:
$this->pageRenderer->loadJavaScriptModule('@hrr/t3-datatable/datatable-backend.js');
-
Render a table with
data-*attributes (see the demo Fluid partialResources/Private/Partials/Module/DataTablePanel.html), or callinitDataTable()from JavaScript.
Full step-by-step instructions are in the developer documentation.
Documentation
https://docs.typo3.org/p/hrr/t3-datatable/main/en-us/
Requirements
- TYPO3 13 LTS / 14
- PHP 8.2+
Compatibility
| TYPO3 | PHP | Extension Version |
|---|---|---|
| 13.4 - 14.3 | 8.2 - 8.4 | 2.0.0 |
Development
From the package root:
composer install composer ci # cs:check + stan + unit + functional composer test:all # unit + functional composer stan # PHPStan composer cs:check # PHP-CS-Fixer (dry-run)
Contributing
Contributions are welcome. Please read the Contributing Guide before opening a pull request.
Acknowledgements
This extension was inspired by and built with help from the following projects and developers:
| Project / author | Role in t3_datatable |
|---|---|
| yajra/laravel-datatables by Arjay Angeles (yajra) | Server-side DataTables protocol, grid engine concept, and query-processing patterns adapted for TYPO3 and Doctrine DBAL |
Authors
License
Licensed under the GNU General Public License v2.0 or later.