ext_tables.php

-- optional

ext_tables.php is not always included in the global scope of the frontend context.

This file is only included when

  • a TYPO3 Backend or CLI request is happening
  • or the TYPO3 Frontend is called and a valid backend user is authenticated

This file usually gets included later within the request and after TCA information is loaded, and a backend user is authenticated.

Should not be used for

Should be used for

These are the typical functions that should be placed inside ext_tables.php

Examples

Put the following in a file called ext_tables.php in the main directory of your extension. The file does not need to be registered but will be loaded automatically:

EXT:site_package/ext_tables.php
<?php

declare(strict_types=1);

use MyVendor\MyExtension\Backend\MyClass;

defined('TYPO3') or die();

// Add your code here
MyClass::doSomething();
Copied!

Read why the check for the TYPO3 constant is necessary.

Registering a scheduler task

Scheduler tasks get registered in ext_tables.php as well. Note that the system extension "scheduler" has to be installed for this to work.

EXT:site_package/ext_tables.php
<?php

declare(strict_types=1);

use TYPO3\CMS\Scheduler\Task\CachingFrameworkGarbageCollectionAdditionalFieldProvider;
use TYPO3\CMS\Scheduler\Task\CachingFrameworkGarbageCollectionTask;

defined('TYPO3') or die();

$lll = 'LLL:EXT:my_extension/Resources/Private/Language/locallang.xlf:';

// Add caching framework garbage collection task
$GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['scheduler']['tasks']
        [CachingFrameworkGarbageCollectionTask::class] = [
            'extension' => 'my_extension',
            'title' => $lll . 'cachingFrameworkGarbageCollection.name',
            'description' => $lll . 'cachingFrameworkGarbageCollection.description',
            'additionalFields' =>
                CachingFrameworkGarbageCollectionAdditionalFieldProvider::class,
        ];
Copied!

Registering a backend module

Changed in version 13.0

The method \use TYPO3\CMS\Extbase\Utility\ExtensionUtility::registerModule() has been removed. Register modules in Modules.php.

Allowing a tables records to be added to Standard pages

Changed in version 13.0

The method ExtensionManagementUtility::allowTableOnStandardPages() has been removed. Use the TCA ctrl option ignorePageTypeRestriction instead.