Files
cms-core/Documentation/Changelog/14.2/Feature-108843-UserSettingsConfigurationMigratedToTCA.rst

109 lines
3.2 KiB
ReStructuredText

.. include:: /Includes.rst.txt
.. _feature-108843-1738600001:
============================================================
Feature: #108843 - User settings configuration migrated to TCA
============================================================
See :issue:`108843`
See :issue:`108832`
Description
===========
The backend user profile settings configuration that was previously stored in
:php:`$GLOBALS['TYPO3_USER_SETTINGS']` is now available in TCA at
:php:`$GLOBALS['TCA']['be_users']['columns']['user_settings']`.
This allows user settings to benefit from TCA-based tooling and provides
a consistent API that extensions already use for other configuration.
A new method
:php:`ExtensionManagementUtility::addUserSetting()` has been introduced to
simplify adding custom fields to user profile settings.
Impact
======
Extensions can add custom fields to backend user profile settings using
the new :php:`addUserSetting()` method in
:file:`Configuration/TCA/Overrides/be_users.php`:
.. code-block:: php
// Configuration/TCA/Overrides/be_users.php
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addUserSetting(
'myCustomSetting',
[
'label' => 'LLL:EXT:my_ext/Resources/Private/Language/locallang.xlf:myCustomSetting',
'config' => [
'type' => 'check',
'renderType' => 'checkboxToggle',
],
],
'after:emailMeAtLogin'
);
Alternatively, extensions can directly modify the TCA:
.. code-block:: php
// Configuration/TCA/Overrides/be_users.php
$GLOBALS['TCA']['be_users']['columns']['user_settings']['columns']['myCustomSetting'] = [
'label' => 'LLL:my_extension.messages:myCustomSetting',
'config' => [
'type' => 'check',
'renderType' => 'checkboxToggle',
],
];
// Add to showitem
$GLOBALS['TCA']['be_users']['columns']['user_settings']['showitem'] .= ',myCustomSetting';
Structure
---------
The :php:`user_settings` TCA column has the following structure:
:php:`columns`
Array of field configurations, each containing:
:php:`label`
The field label (LLL reference or string)
:php:`config`
Standard TCA config array (type, renderType, items, etc.)
:php:`table` (optional)
Set to :php:`'be_users'` if the field is stored in a
:sql:`be_users` table column
:php:`showitem`
Comma-separated list of fields to display; supports
:php:`--div--;` for tabs
Available field types
---------------------
* :php:`input` - Text input field
* :php:`number` - Number input field
* :php:`email` - Email input field
* :php:`password` - Password input field
* :php:`check` with :php:`renderType => 'checkboxToggle'` -
Checkbox or toggle
* :php:`select` with :php:`renderType => 'selectSingle'` -
Select field
* :php:`language` - Language selector
Backward compatibility
----------------------
For backward compatibility, the legacy
:php:`$GLOBALS['TYPO3_USER_SETTINGS']` array is still supported. Third-party
additions are automatically migrated to TCA after all
:file:`ext_tables.php` files have been loaded. However, this approach is
deprecated, and extensions should migrate to the new TCA-based API.
.. index:: Backend, TCA, PHP-API, ext:setup