Deprecation: #65290 - TCA changes
See forge#65290
Description
Some details in the main Table Configuration Array, TCA
, known on PHP side as $GLOBALS
changed.
Simplified types
showitem
configuration using columnsOverrides
If a field is configured as type
in TCA
ctrl
section, the value of this database field determines
which fields are shown if opening a record in the backend. The shown fields are configured in TCA
section
types
showitem
and is a comma separated list of field names. Each field name can have 4 additional
semicolon separated options, from which the last two have been dropped and moved:
Before:
'types' => array(
'aType' => array(
'showitem' => 'aField,anotherField;otherLabel;aPalette;special:configuration;a-style-indicator,thirdField',
),
),
If a record is opened that has the type field set to a
, it would show the three fields a
, another
and third
. The second field another
has further configuration and shows a different label, adds an additional
palette below the field referenced as a
, adds special:
as special configuration and changes
the style with its last field. The last two parameters were changed: The style configuration is obsolete since 7.1 and has been removed.
The special configuration is identical to the default
field of a columns
field section and can be added with this
name in a newly introduced array columns
that is parallel to showitem
of this type:
'types' => array(
'aType' => array(
'showitem' => 'aField,anotherField;otherLabel;aPalette,thirdField',
'columnsOverrides` => array(
'anotherField' => array(
'defaultExtras' => 'special:configuration',
),
),
),
),
So, the 4th parameter has been transferred to columns
while the 5th parameter has been removed.
This change enables more flexible overrides of column configuration based on a given type. This is currently used in
Form
only, so only view-related parameters must be overwritten here. It is not supported to change data handling
related parameters like type=text
to type=select
or similar, but it is possible to change for example the number
of rows shown in a type=text
column field:
'types' => array(
'aType' => array(
'showitem' => 'aField,anotherField;otherLabel;aPalette,thirdField',
'columnsOverrides` => array(
'anotherField' => array(
'config' => array(
'rows' => 42,
),
),
),
),
),
It is also possible to remove a given configuration from the default configuration using the __
keyword. Again,
this is only supported for view-related configuration options. Changing for instance an eval
option may cripple the
PHP-side validation done by the DataHandler that checks and stores values.
'types' => array(
'aType' => array(
'columnsOverrides` => array(
'bodytext' => array(
'config' => array(
'rows' => '__UNSET',
),
),
),
),
),
The above example would remove the rows
parameter of the bodytext
field columns configuration, so a default
value would be used instead.
Simplified t3editor configuration
t3editor is no longer configured and enabled as wizard.
Configuration for a column field looked like this before:
'bodytext' => array(
'config' => array(
'type' => 'text',
'rows' => 42,
'wizards' => array(
't3editor' => array(
'type' => 'userFunc',
'userFunc' => 'TYPO3\CMS\T3editor\FormWizard->main',
'title' => 't3editor',
'icon' => 'wizard_table.gif',
'module' => array(
'name' => 'wizard_table'
),
'params' => array(
'format' => 'html',
'style' => 'width:98%; height: 60%;'
),
),
),
),
),
The new configuration is simplified to:
'bodytext' => array(
'exclude' => 1,
'label' => 'aLabel',
'config' => array(
'type' => 'text',
'renderType' => 't3editor',
'format' => 'html',
'rows' => 42,
),
),
In case t3editor was only enabled for a specific type, this was previously done with
enable
within the wizard configuration and wizards
as
the 4th semicolon separated parameter of the according field in section showitem
of the
type
where t3editor should be enabled. Old configuration was:
'columns' => array(
'bodytext' => array(
'exclude' => 1,
'label' => 'aLabel',
'config' => array(
'type' => 'text',
'rows' => 42,
'wizards' => array(
't3editorHtml' => array(
'type' => 'userFunc',
'userFunc' => 'TYPO3\CMS\T3editor\FormWizard->main',
'enableByTypeConfig' => 1,
'title' => 't3editor',
'icon' => 'wizard_table.gif',
'module' => array(
'name' => 'wizard_table'
),
'params' => array(
'format' => 'html',
'style' => 'width:98%; height: 60%;'
),
),
),
),
),
),
'types' => array(
'firstType' => array(
'showitem' => 'bodytext;;;wizards[t3editorHtml]',
),
),
This now uses the new columns
feature parallel to showitem
:
'columns' => array(
'bodytext' => array(
'config' => array(
'type' => 'text',
'rows' => 42,
),
),
),
'types' => array(
'firstType' => array(
'showitem' => 'bodytext',
'columnsOverrides' => array(
'bodytext' => array(
'config' => array(
'format' => 'typoscript',
'renderType' => 't3editor',
),
),
),
),
Impact
TCA is automatically migrated during bootstrap of the TYPO3 core and the result is cached.
In case TCA is still registered or changed in extensions with entries in ext_
, an automatic
migration of this part of TCA
is only triggered if extension compatibility6
is loaded. This has a
performance penalty since the migration in compatibility6
is then done on every frontend and backend
script call and is not cached.
It is strongly advised to move remaining TCA
changes from ext_
to Configuration/
or
Configuration/
of the according extension and to unload compatibility6
.
Migration
An automatic migration is in place. It throws deprecation log entries in case TCA
had to be changed on the fly.
The migration logs give hints on what exactly has changed and the final TCA
can be inspected in the backend
configuration module. If outdated flexforms are used, the migration is done within the FormEngine class
construct on the fly and will throw deprecation warnings as soon as a record with outdated TCA
flexforms
is opened in the backend.
Typical migration of the 4th showitem
parameter involves moving a RTE configuration like
richtext:
or the type=text
flags nowrap
, fixed-
and enabled-
to columns
.