Type to search columns, filters, options, and extensions.

to navigate · Enter to open · Esc to close

Documentation

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:

PositionDescription
topStartTop-left area
topEndTop-right area
bottomStartBottom-left area
bottomEndBottom-right area
topFull top row
bottomFull bottom row
top2Start, top2End, ...Additional numbered rows

Available features:

FeatureDescription
pageLengthPage length selector
searchGlobal search input
infoTable info summary
pagingPagination controls
buttonsButtons extension slot
searchBuilderSearch builder UI
searchPanesSearch 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
KeyDefaultDescription
boundaryNumberstrueAlways show the first and last page numbers
buttons7Number of page number buttons
firstLasttrueShow the first and last buttons
numberstrueShow the page number buttons
previousNexttrueShow 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