Troubleshooting
Empty table / zero records
- Confirm the grid identifier in JavaScript matches
get.Identifier () - Check the table name in
getexists and has data.Table Name () - If using
withDeletedRestriction()orwithHiddenRestriction(), ensure those columns exist on the table.
Invalid column name error
The client sent a column not declared on the grid, or a name failing the allowlist. Only use alphanumeric column names with dots/underscores.
Grid not registered / 400 response
- Implement
Gridin your extension.Interface - Add the
t3datatable.gridtag via_instanceofin yourServices.(the tag in T3 DataTable alone does not apply to foreign packages).yaml - Flush caches after adding a new grid class.
Unauthorized / 401
The AJAX endpoint requires a logged-in backend user. Do not call it from the public frontend without a separate route and security model.
JavaScript: ajaxUrls.t3datatable_data undefined
- Activate EXT:t3_datatable.
- Flush all caches.
- Ensure you are in a backend module context (not frontend).
Executing inline script violates ... Content Security Policy
The backend CSP blocks inline <script> tags. This happens if you place an
inline <script type="module">import { initDataTable } ...</script> directly
in a Fluid template.
Fix: remove the inline script. Load the module from the controller with
$page
and configure the table via data-* attributes
(data-t3-datatable, data-columns, data-page-length). The module
auto-initializes on DocumentService.ready(). See
Backend JavaScript module.
Adding a Configuration/ mutation only helps
for external resources (e.g. a CDN host). It does not unblock inline
scripts without an 'unsafe-inline' relaxation, which is discouraged.
Search returns no results on SQLite / case sensitivity
Global search uses LOWER(column) LIKE for case-insensitive matching.
Verify searchable columns are declared with searchable: true.
Render documentation locally
You can preview this documentation on your own machine. You need Docker installed, the same as with other TYPO3 extensions. From the package root, run:
composer doc-watch
This starts the official TYPO3 documentation renderer and watches for changes, so the pages rebuild as you edit them.