Advanced examples for multiple side-by-side select boxes
See also: tca_.
Side-by-side view with filter
The equipment of a talk with its filter
EXT:my_extension/Configuration/TCA/Overrides/270-tx_myextension_talk-equipment.php
<?php
use TYPO3\CMS\Core\Utility\ExtensionManagementUtility;
defined('TYPO3') or die();
ExtensionManagementUtility::addTCAcolumns('tx_myextension_talk', [
'equipment' => [
'label' => 'my_extension.db:talk.equipment',
'config' => [
'type' => 'select',
'renderType' => 'selectMultipleSideBySide',
'items' => [
['label' => 'my_extension.db:talk.equipment.audio', 'value' => '--div--'],
['label' => 'my_extension.db:talk.equipment.handheld_microphone', 'value' => 'handheld_microphone'],
['label' => 'my_extension.db:talk.equipment.headset', 'value' => 'headset'],
['label' => 'my_extension.db:talk.equipment.video', 'value' => '--div--'],
['label' => 'my_extension.db:talk.equipment.projector', 'value' => 'projector'],
['label' => 'my_extension.db:talk.equipment.video_recording', 'value' => 'video_recording'],
],
'size' => 5,
'autoSizeMax' => 10,
'multiple' => true,
'multiSelectFilterItems' => [
['label' => '', 'value' => ''],
['label' => 'my_extension.db:talk.equipment.microphone', 'value' => 'microphone'],
['label' => 'my_extension.db:talk.equipment.video', 'value' => 'video'],
],
'behaviour' => [
'allowLanguageSynchronization' => true,
],
],
],
]);
ExtensionManagementUtility::addToAllTCAtypes(
'tx_myextension_talk',
'equipment',
'talk,workshop',
'before:--div--;core.form.tabs:access',
);
Side-by-side select with field controls
The speakers of a conference with field controls
EXT:my_extension/Configuration/TCA/Overrides/125-tx_myextension_conference-speakers.php
<?php
use TYPO3\CMS\Core\Utility\ExtensionManagementUtility;
defined('TYPO3') or die();
ExtensionManagementUtility::addTCAcolumns('tx_myextension_conference', [
'speakers' => [
'label' => 'my_extension.db:conference.speakers',
'config' => [
'type' => 'select',
'renderType' => 'selectMultipleSideBySide',
'foreign_table' => 'tx_myextension_speaker',
'MM' => 'tx_myextension_conference_speaker_mm',
// Speakers in the default language, not their translations
'foreign_table_where' => 'AND {#tx_myextension_speaker}.{#sys_language_uid} IN (-1, 0) ORDER BY tx_myextension_speaker.name',
'size' => 5,
'autoSizeMax' => 20,
'fieldControl' => [
'editPopup' => [
'disabled' => false,
'options' => [
'title' => 'my_extension.db:conference.speakers.edit',
],
],
'addRecord' => [
'disabled' => false,
'options' => [
'title' => 'my_extension.db:conference.speakers.add',
// A new speaker comes first in the list of selected speakers
'setValue' => 'prepend',
],
],
'listModule' => [
'disabled' => false,
'options' => [
'title' => 'my_extension.db:conference.speakers.list',
],
],
],
],
],
]);
ExtensionManagementUtility::addToAllTCAtypes(
'tx_myextension_conference',
'speakers',
'',
'before:--div--;my_extension.db:tab.details',
);
Using a MM table
The speakers of a conference
EXT:my_extension/Configuration/TCA/Overrides/125-tx_myextension_conference-speakers.php
<?php
use TYPO3\CMS\Core\Utility\ExtensionManagementUtility;
defined('TYPO3') or die();
ExtensionManagementUtility::addTCAcolumns('tx_myextension_conference', [
'speakers' => [
'label' => 'my_extension.db:conference.speakers',
'config' => [
'type' => 'select',
'renderType' => 'selectMultipleSideBySide',
'foreign_table' => 'tx_myextension_speaker',
'MM' => 'tx_myextension_conference_speaker_mm',
// Speakers in the default language, not their translations
'foreign_table_where' => 'AND {#tx_myextension_speaker}.{#sys_language_uid} IN (-1, 0) ORDER BY tx_myextension_speaker.name',
'size' => 5,
'autoSizeMax' => 20,
'fieldControl' => [
'editPopup' => [
'disabled' => false,
'options' => [
'title' => 'my_extension.db:conference.speakers.edit',
],
],
'addRecord' => [
'disabled' => false,
'options' => [
'title' => 'my_extension.db:conference.speakers.add',
// A new speaker comes first in the list of selected speakers
'setValue' => 'prepend',
],
],
'listModule' => [
'disabled' => false,
'options' => [
'title' => 'my_extension.db:conference.speakers.list',
],
],
],
],
],
]);
ExtensionManagementUtility::addToAllTCAtypes(
'tx_myextension_conference',
'speakers',
'',
'before:--div--;my_extension.db:tab.details',
);