Feature: #97232 - New TCA type "datetime"
See forge#97232
Description
Especially TCA type
input has a wide range of use cases, depending
on the configured
render and the
eval options. Determination
of the semantic meaning is therefore usually quite hard and often leads to
duplicated checks and evaluations in custom extension code.
In our effort of introducing dedicated TCA types for all those use
cases, the TCA type
datetime has been introduced. It replaces the
render of TCA type
input.
The TCA type
datetime features the following column configuration:
behaviour:allowLanguage Synchronization db:Type date,time,datetimedefaultdisableAge Display fieldControl fieldInformation fieldWizard format:datetime(default),date,time,timesecmodenullableplaceholderrange:lower,upperreadOnly requiredsearchsize
Note
The
eval=integer option is now automatically set for the element
in case no specific
db has been defined. It should therefore
be removed from the TCA configuration.
Note
The
format option defines how the display of the field value
will be in e.g. FormEngine. The storage format is defined via
db
and falls back to
eval=integer.
The following column configuration can be overwritten by page TSconfig:
readOnly size
A complete migration from
render to
type=datetime
looks like the following:
// Before
'a_datetime_field' => [
'label' => 'Datetime field',
'config' => [
'type' => 'input',
'renderType' => 'inputDateTime',
'required' => true,
'size' => 20,
'max' => 1024,
'eval' => 'date,int',
'default' => 0,
],
],
// After
'a_datetime_field' => [
'label' => 'Datetime field',
'config' => [
'type' => 'datetime',
'format' => 'date',
'required' => true,
'size' => 20,
'default' => 0,
]
]
An automatic TCA migration is performed on the fly, migrating all occurrences
to the new TCA type and triggering a PHP
E_ error
where code adoption has to take place.
Note
The corresponding FormEngine class has been renamed from
Input
to
Datetime. An entry in the "ClassAliasMap" has been added
for extensions calling this class directly, which is rather unlikely. The
extension scanner will report any usage, which should then be migrated.
Automatic database fields
TYPO3 automatically creates database fields for TCA type
datetime
columns, if they have not already been defined in an extension's
ext_ file. This also supports columns, having a
native database type (
db) defined. Fields without a native
type always define
default 0 and are always signed (to allow
negative timestamps). As long as a column does not use
nullable=true,
the fields are also always defined as
NOT NULL.
Impact
It's now possible to simplify the TCA configuration by using the new
dedicated TCA type
datetime. Next to reduced TCA configuration,
the new type allows to omit the corresponding database field definition.