---
title: "How to use enablecolumns in the ctrl section of TCA"
manual: "TCA Reference"
version: "13.4"
permalink: "https://docs.typo3.org/permalink/t3tca:ctrl-enablecolumns@13.4"
source: "Ctrl/EnableColumns.rst"
rendered: "2026-09-26T05:13:32+00:00"
---

# How to use `enablecolumns` in the `ctrl` section of TCA {#ctrl-enablecolumns}

## Migration {#ctrl-reference-enablecolumns-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 [palettes](https://docs.typo3.org/permalink/t3tca:palettes@13.4) and
[types](https://docs.typo3.org/permalink/t3tca:types@13.4) definitions, however:

**EXT:my_extension/Configuration/TCA/tx_myextension_domain_model_something.php**

```diff
 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 {#ctrl-reference-enablecolumns-examples}

**EXT:my_extension/Configuration/TCA/tx_myextension_domain_model_something.php**

```php
<?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 {#ctrl-reference-enablecolumns-examples-all}

## Make table hideable {#ctrl-reference-enablecolumns-examples-hidden}

**EXT:my_extension/Configuration/TCA/tx_myextension_domain_model_something.php**

```php
<?php

return [
  'ctrl' => [
    'enablecolumns' => [
      'disabled' => 'hidden',
    ],
    // ...
  ],
  '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-reference-enablecolumns-examples-common}

![Record information shown editing an example record](../Images/AutomaticScreenshots/CtrlEnableFields.png)

**EXT:styleguide/Configuration/TCA/tx_styleguide_ctrl_common.php**

```php
[
    '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',
        '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 {#enablefields-usage}

Most ways of retrieving records in the frontend automatically respect the
`ctrl->enablecolumns` settings:

### Enablecolumns in TypoScript {#enablefields-usage-typoscript}

Records retrieved in TypoScript via the objects
[RECORDS](https://docs.typo3.org/m/typo3/reference-typoscript/13.4/en-us/ContentObjects/Records/Index.html#cobj-records), [CONTENT](https://docs.typo3.org/m/typo3/reference-typoscript/13.4/en-us/ContentObjects/Content/Index.html#cobj-content)
automatically respect the settings in section
[ctrl->enablecolumns](https://docs.typo3.org/permalink/t3tca:ctrl-reference-enablecolumns@13.4).

### Enablecolumns / enablefields in Extbase {#enablefields-usage-extbase}

In Extbase repositories the records are hidden in the frontend by default,
however this behaviour can be disabled by setting
`$querySettings->setIgnoreEnableFields(true)` in the
[repository](https://docs.typo3.org/m/typo3/reference-coreapi/13.4/en-us/ExtensionArchitecture/Extbase/Reference/Domain/Repository/Index.html#extbase-repository).

### Enablecolumns in queries {#enablefields-usage-queries}

Using the QueryBuilder
[enable columns restrictions are automatically applied](https://docs.typo3.org/m/typo3/reference-coreapi/13.4/en-us/ApiOverview/Database/DoctrineDbal/BasicCrud/Index.html#database-select).

The same is true when
[select() is called on the connection](https://docs.typo3.org/m/typo3/reference-coreapi/13.4/en-us/ApiOverview/Database/DoctrineDbal/Connection/Index.html#database-connection-select).

See the [restriction builder](https://docs.typo3.org/m/typo3/reference-coreapi/13.4/en-us/ApiOverview/Database/DoctrineDbal/RestrictionBuilder/Index.html#database-restriction-builder) for details.
