Advanced examples for multiple side-by-side select boxes 

See also: tca_example_select_multiplesidebyside_1.

Side-by-side view with filter 

The equipment of a talk with its 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',
);
Copied!

Side-by-side select with field controls 

The speakers of a conference 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',
);
Copied!

Using a MM table 

The speakers of a conference

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',
);
Copied!