.. 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