Configuration
Configure DataTables defaults and bundle options
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
paging:
boundaryNumbers: true
buttons: 7
firstLast: true
numbers: true
previousNext: true
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, an array of features, null to hide, or a DataTables feature object.
data_tables:
options:
layout:
topStart: pageLength
topEnd: search
bottomStart: info
bottomEnd: paging
Multi-features per position:
data_tables:
options:
layout:
topEnd: [search, buttons]
bottomStart: null
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 |
top2Start, top2End, ... | Additional numbered rows |
Available features:
| Feature | Description |
|---|---|
pageLength | Page length selector |
search | Global search input |
info | Table info summary |
paging | Pagination controls |
buttons | Buttons extension slot |
searchBuilder | Search builder UI |
searchPanes | Search panes UI |
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
paging
Sets the default paging layout feature for every table (button count, first/last, …), not the
top-level DataTables boolean. At render time the bundle injects these keys into unmarked layout
paging slots (bottomEnd: paging by default). An explicit { paging: { … } } object in layout
wins and is not overwritten.
Only the keys you declare need to be listed; the others keep their defaults.
data_tables:
options:
paging:
buttons: 5
firstLast: false
| Key | Default | Description |
|---|---|---|
boundaryNumbers | true | Always show the first and last page numbers |
buttons | 7 | Number of page number buttons |
firstLast | true | Show the first and last buttons |
numbers | true | Show the page number buttons |
previousNext | true | Show the previous and next buttons |
Override it per table with $table->paging(...), or disable pagination entirely with
$table->withoutPaging().
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 apply to every table declared as an AbstractDataTable class, and can be
overridden for individual tables:
use Pentiminax\UX\DataTables\Enum\Language;
use Pentiminax\UX\DataTables\Model\DataTable;
public function configureDataTable(DataTable $table): DataTable
{
return $table
->pageLength(50) // Override default 10
->language(Language::DE); // Override default en-GB
}
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