TYPO3 v15 dev-main snapshot ()
This commit is contained in:
+110
@@ -0,0 +1,110 @@
|
||||
.. include:: /Includes.rst.txt
|
||||
|
||||
.. _feature-85160:
|
||||
|
||||
================================================================
|
||||
Feature: #85160 - Auto create management DB fields from TCA ctrl
|
||||
================================================================
|
||||
|
||||
See :issue:`85160`
|
||||
|
||||
Description
|
||||
===========
|
||||
|
||||
The database schema analyzer automatically creates TYPO3 "management" related
|
||||
database columns by reading a tables :php:`TCA` and checking the :php:`ctrl`
|
||||
section for table capabilities.
|
||||
|
||||
Note this affects only basic columns like :php:`uid`, :php:`deleted` and language
|
||||
handling related fields like :php:`sys_language_uid`, but **not** a tables main
|
||||
business fields like a "title" field for a news extension. Those still have to
|
||||
be defined by extension authors. No column definitions are created from the
|
||||
:php:`columns` section of a tables :php:`TCA`.
|
||||
|
||||
However, :file:`ext_tables.sql` file can be stripped down to business fields.
|
||||
For example, if a :php:`TCA` definition of a table specifies
|
||||
:php:`$GLOBALS['TCA']['myTable']['ctrl']['sortby'] = 'sorting'`,
|
||||
the core will automatically add the column :php:`sorting` with an appropriate
|
||||
definition.
|
||||
|
||||
Field definitions in :file:`ext_tables.sql` take precedence over automatically
|
||||
generated fields, so the core never overrides a manually specified column definition
|
||||
from an :file:`ext_tables.sql` file.
|
||||
|
||||
These columns below are automatically added if not defined in :file:`ext_tables.sql`
|
||||
for database tables that provide a :php:`$GLOBALS['TCA']` definition:
|
||||
|
||||
:php:`uid` and :php:`PRIMARY KEY`
|
||||
If removing the uid field from ext_tables.sql, the :php:`PRIMARY KEY` **must** be removed, too.
|
||||
|
||||
:php:`pid` and :php:`KEY parent`
|
||||
Column pid is :php:`unsigned` if the table is not workspace aware, the default
|
||||
index :php:`parent` includes :php:`pid` and :php:`hidden` as well as :php:`deleted`
|
||||
if the latter two are specified in :php:`TCA` :php:`ctrl`. The parent index creation
|
||||
is only applied if column :php:`pid` is auto generated, too.
|
||||
|
||||
:php:`['ctrl']['tstamp'] = 'fieldName'`
|
||||
Often set to :php:`tstamp` or :php:`updatedon`
|
||||
|
||||
:php:`['ctrl']['crdate'] = 'fieldName'`
|
||||
Often set to :php:`crdate` or :php:`createdon`
|
||||
|
||||
:php:`['ctrl']['cruser_id'] = 'fieldName'`
|
||||
Often set to :php:`cruser` or :php:`createdby`
|
||||
|
||||
:php:`['ctrl']['delete'] = 'fieldName'`
|
||||
Often set to :php:`deleted`
|
||||
|
||||
:php:`['ctrl']['enablecolumns']['disabled'] = 'fieldName'`
|
||||
Often set to :php:`hidden` or :php:`disabled`
|
||||
|
||||
:php:`['ctrl']['enablecolumns']['starttime'] = 'fieldName'`
|
||||
Often set to :php:`starttime`
|
||||
|
||||
:php:`['ctrl']['enablecolumns']['endtime'] = 'fieldName'`
|
||||
Often set to :php:`endtime`
|
||||
|
||||
:php:`['ctrl']['enablecolumns']['fe_group'] = 'fieldName'`
|
||||
Often set to :php:`fe_group`
|
||||
|
||||
:php:`['ctrl']['sortby'] = 'fieldName'`
|
||||
Often set to :php:`sorting`
|
||||
|
||||
:php:`['ctrl']['descriptionColumn'] = 'fieldName'`
|
||||
Often set to :php:`description`
|
||||
|
||||
:php:`['ctrl']['editlock'] = 'fieldName'`
|
||||
Often set to :php:`editlock`
|
||||
|
||||
:php:`['ctrl']['languageField'] = 'fieldName'`
|
||||
Often set to :php:`sys_language_uid`
|
||||
|
||||
:php:`['ctrl']['transOrigPointerField'] = 'fieldName'`
|
||||
Often set to :php:`l10n_parent`
|
||||
|
||||
:php:`['ctrl']['translationSource'] = 'fieldName'`
|
||||
Often set to :php:`l10n_source`
|
||||
|
||||
:php:`l10n_state`
|
||||
Column added if :php:`languageField` and :php:`transOrigPointerField` are set
|
||||
|
||||
:php:`['ctrl']['origUid'] = 'fieldName'`
|
||||
Often set to :php:`t3_origuid`
|
||||
|
||||
:php:`['ctrl']['transOrigDiffSourceField'] = 'fieldName'`
|
||||
Often set to :php:`l10n_diffsource`
|
||||
|
||||
:php:`['ctrl']['versioningWS'] = true` - :php:`t3ver_*` columns
|
||||
Columns that make a table workspace aware. All those fields are prefixed with
|
||||
:php:`t3ver_`, for example :php:`t3ver_oid` and :php:`t3ver_id`. A default
|
||||
index named :php:`t3ver_oid` to fields :php:`t3ver_oid` and :php:`t3ver_wsid` is
|
||||
added, too.
|
||||
|
||||
|
||||
Impact
|
||||
======
|
||||
|
||||
Extension developers can skip tons of "general" fields from extensions
|
||||
:file:`ext_tables.sql` files.
|
||||
|
||||
.. index:: Database, TCA
|
||||
Reference in New Issue
Block a user