Configuration
Configure bundle-wide defaults in config/packages/data_tables.yaml.
Full Configuration Reference
data_tables:
options:
language: en-GB
layout:
topStart: pageLength
topEnd: search
bottomStart: info
bottomEnd: paging
lengthMenu: [10, 25, 50]
pageLength: 10
template_parameters:
class: 'table'
extensions:
buttons: [csv, excel, pdf, print]
select:
style: single
Options
language
Sets the default language locale for DataTables UI elements. The bundle translates locale codes into the correct CDN URL for DataTables language files.
data_tables:
options:
language: fr-FR # French
# language: de-DE # German
# language: es-ES # Spanish
Supported locales: Any locale supported by DataTables i18n.
layout
Controls the positioning of DataTables UI features. Each position accepts a feature name.
data_tables:
options:
layout:
topStart: pageLength # Page length selector
topEnd: search # Search box
bottomStart: info # "Showing X of Y entries"
bottomEnd: paging # Pagination controls
Available positions:
| Position | Description |
|---|---|
| `topStart` | Top-left area |
| `topEnd` | Top-right area |
| `bottomStart` | Bottom-left area |
| `bottomEnd` | Bottom-right area |
| `top` | Full top row |
| `bottom` | Full bottom row |
Available features:
| Feature | Description |
|---|---|
| `pageLength` | Page length selector |
| `search` | Global search input |
| `info` | Table info summary |
| `paging` | Pagination controls |
| `buttons` | Buttons extension slot |
lengthMenu
Defines the available page length options shown in the dropdown:
data_tables:
options:
lengthMenu: [10, 25, 50, 100]
You can also provide custom labels:
// In PHP
$table->lengthMenu([
[10, 25, 50, -1],
[10, 25, 50, 'All']
]);
pageLength
Sets the initial number of rows displayed:
data_tables:
options:
pageLength: 25
Template Parameters
Default HTML attributes for the generated <table> element:
data_tables:
template_parameters:
class: 'table table-striped table-hover'
id: 'my-default-table'
These can be overridden per-table in Twig:
{{ render_datatable(table, {'class': 'custom-class'}) }}
Extensions
Configure default extensions enabled for all tables:
data_tables:
extensions:
buttons: [csv, excel, pdf, print, copy, colvis]
select:
style: single # or 'multi'
Buttons Extension
extensions:
buttons:
- csv
- excel
- pdf
- print
- copy
- colvis # Column visibility toggle
Select Extension
extensions:
select:
style: single # Single row selection
# style: multi # Multiple row selection
Per-Table Override
Bundle defaults can be overridden for individual tables:
$table = $builder
->createDataTable('myTable')
->pageLength(50) // Override default 10
->language(Language::DE) // Override default en-GB
->columns([/* ... */]);
Environment-Specific Configuration
Use Symfony’s configuration system for different environments:
# config/packages/data_tables.yaml (default)
data_tables:
options:
pageLength: 10
# config/packages/dev/datatables.yaml
data_tables:
options:
pageLength: 5 # Smaller for development