How to use enablecolumns
in the ctrl
section of TCA¶
Migration¶
Migration: Remove enable column definitions (hidden, starttime, endtime, fe_groups) from TCA On dropping TYPO3 v12.4 support extensions authors can drop the column definitions of the enable fields. They need to keep the Grouping fields (palettes) and Fields to be displayed (types) definitions, however:
return [
'ctrl' => [
'enablecolumns' => [
'disabled' => 'hidden',
'starttime' => 'starttime',
'endtime' => 'endtime',
],
// ...
],
- 'columns' => [
- 'hidden' => [
- 'exclude' => true,
- 'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.enabled',
- 'config' => [
- 'type' => 'check',
- 'renderType' => 'checkboxToggle',
- 'items' => [
- [
- 'label' => '',
- 'invertStateDisplay' => true,
- ],
- ],
- ],
- ],
- 'starttime' => [
- 'exclude' => true,
- 'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.starttime',
- 'config' => [
- 'type' => 'datetime',
- 'default' => 0,
- ],
- 'l10n_mode' => 'exclude',
- 'l10n_display' => 'defaultAsReadonly',
- ],
- 'endtime' => [
- 'exclude' => true,
- 'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.endtime',
- 'config' => [
- 'type' => 'datetime',
- 'default' => 0,
- 'range' => [
- 'upper' => mktime(0, 0, 0, 1, 1, 2038),
- ],
- ],
- 'l10n_mode' => 'exclude',
- 'l10n_display' => 'defaultAsReadonly',
- ],
- 'fe_group' => [
- 'exclude' => true,
- 'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.fe_group',
- 'config' => [
- 'type' => 'select',
- 'renderType' => 'selectMultipleSideBySide',
- 'size' => 5,
- 'maxitems' => 20,
- 'items' => [
- [
- 'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.hide_at_login',
- 'value' => -1,
- ],
- [
- 'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.any_login',
- 'value' => -2,
- ],
- [
- 'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.usergroups',
- 'value' => '--div--',
- ],
- ],
- 'exclusiveKeys' => '-1,-2',
- 'foreign_table' => 'fe_groups',
- ],
- ],
- // ...
- ],
'palettes' => [
'paletteHidden' => [
'showitem' => '
hidden
',
],
'paletteAccess' => [
'label' => 'LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:palette.access',
'showitem' => '
starttime;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:starttime_formlabel,
endtime;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:endtime_formlabel,
--linebreak--,
fe_group;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:fe_group_formlabel,
',
],
],
'types' => [
0 => [
'showitem' => '
--div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:general,
[...],
--div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:access,
--palette--;;paletteHidden,
--palette--;;paletteAccess,
',
],
],
];
Examples of column enable configurations¶
<?php
return [
'ctrl' => [
'enablecolumns' => [
'disabled' => 'hidden',
'starttime' => 'starttime',
'endtime' => 'endtime',
],
// ...
],
'palettes' => [
'paletteHidden' => [
'showitem' => '
hidden
',
],
'paletteAccess' => [
'label' => 'LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:palette.access',
'showitem' => '
starttime;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:starttime_formlabel,
endtime;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:endtime_formlabel,
--linebreak--,
fe_group;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:fe_group_formlabel,
',
],
],
'types' => [
0 => [
'showitem' => '
--div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:general,
[...],
--div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:access,
--palette--;;paletteHidden,
--palette--;;paletteAccess,
',
],
],
];
Define all enablecolumn fields¶
Make table hideable¶
<?php
return [
'ctrl' => [
'enablecolumns' => [
'disabled' => 'hidden',
],
// ...
],
'columns' => [
'hidden' => [
'exclude' => true,
'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.enabled',
'config' => [
'type' => 'check',
'renderType' => 'checkboxToggle',
'items' => [
[
'label' => '',
'invertStateDisplay' => true,
],
],
],
],
// ...
],
'palettes' => [
'visibility' => [
'showitem' => 'hidden',
],
],
'types' => [
0 => [
'showitem' => '
--div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:general,
[...],
--div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:access,
--palette--;;visibility,
',
],
],
];
Common enable fields¶
[
'ctrl' => [
'title' => 'Form engine - Common table control',
'label' => 'title',
'descriptionColumn' => 'description',
'tstamp' => 'tstamp',
'crdate' => 'crdate',
'delete' => 'deleted',
'sortby' => 'sorting',
'default_sortby' => 'title',
'versioningWS' => true,
'rootLevel' => -1,
'iconfile' => 'EXT:styleguide/Resources/Public/Icons/tx_styleguide.svg',
'origUid' => 't3_origuid',
'languageField' => 'sys_language_uid',
'transOrigPointerField' => 'l10n_parent',
'transOrigDiffSourceField' => 'l10n_diffsource',
'translationSource' => 'l10n_source',
'searchFields' => 'title,description',
'enablecolumns' => [
'disabled' => 'hidden',
'starttime' => 'starttime',
'endtime' => 'endtime',
],
'security' => [
'ignorePageTypeRestriction' => true,
],
],
]
Enablecolumns / enablefields usage¶
Most ways of retrieving records in the frontend automatically respect the
ctrl->enablecolumns
settings:
Enablecolumns in TypoScript¶
Records retrieved in TypoScript via the objects RECORDS, CONTENT automatically respect the settings in section ctrl->enablecolumns.
Enablecolumns / enablefields in Extbase¶
In Extbase repositories the records are hidden in the frontend by default,
however this behaviour can be disabled by setting
$query
in the
repository.
Enablecolumns in queries¶
Using the QueryBuilder enable columns restrictions are automatically applied.
The same is true when select() is called on the connection.
See the Restriction builder for details.