Select multiple values (selectSingleBox)¶
This page describes the select type with renderType='selectSingleBox'.
The according database field is generated automatically.
Note
The name is misleading. This is a renderType which allows you to select multiple elements!
Renders a select field to select multiple entries from a given list.
Table of contents
Example: Select multiple values from a box¶
[
'columns' => [
'select_singlebox_1' => [
'label' => 'select_singlebox_1 description',
'description' => 'field description',
'config' => [
'type' => 'select',
'renderType' => 'selectSingleBox',
'items' => [
[
'label' => 'foo 1',
'value' => 1,
],
[
'label' => 'foo 2',
'value' => 2,
],
[
'label' => 'divider',
'value' => '--div--',
],
[
'label' => 'foo 3',
'value' => 3,
],
[
'label' => 'foo 4',
'value' => 4,
],
],
],
],
],
]
Properties of the TCA column type select
with renderType selectSingleBox
¶
-
allow
¶Non Id Values -
- Type
- boolean
- Path
- $GLOBALS['TCA'][$table]['columns'][$field]['config']
- Scope
- Proc.
- RenderType
- all
Only useful if foreign_table is enabled.
If set, then values which are not integer ids will be allowed. May be needed if you use itemsProcFunc or just enter additional items in the items array to produce some string-value elements for the list.
Note
If you mix non-database relations with database relations like this, DO NOT use integers for values and DO NOT use "_" (underscore) in values either! Will not work if you also use "MM" relations!
-
auth
¶Mode -
- Type
- string (keyword)
- Path
- $GLOBALS['TCA'][$table]['columns'][$field]['config']
- Scope
- Display / Proc.
- RenderType
- all
Authorization mode for the selector box. The only possible option is:
- explicitAllow
- All static values from the "items" array of the selector box will be added to a matrix in the backend user configuration where a value must be explicitly selected if a user (other than admin) is allowed to use it!)
The "deny list" approach for single field values has been removed, the only allowed option
for auth
is explicit
. Extensions using config value explicit
should be adapted to switch to explicit
instead. The upgrade wizard
"Migrate backend groups "explicit_allowdeny" field to simplified format." that transfers
existing be_
rows to the new format, drops any DENY
fields and instructs
admins to not set new access rights of affected backend groups.
Handling of auth
being set to individual
has been fully dropped.
The Core provides no alternative. This has been an obscure setting ever since and there is no
direct migration. Extensions that rely on this handling need to find a substitution based on
Core hooks, Core events or other existing Core API functionality.
-
behaviour
¶ -
-
allow
¶Language Synchronization -
- Type
- boolean
- Default
- false
- Path
- $GLOBALS['TCA'][$table]['columns'][$field]['config']['behaviour']['allowLanguageSynchronization']
- Scope
- Proc.
Allows an editor to select in a localized record whether the value is copied over from default or source language record, or if the field has an own value in the localization. If set to true and if the table supports localization and if a localized record is edited, this setting enables FieldWizard LocalizationStateSelector: Two or three radio buttons shown below the field input. The state of this is stored in a json encoded array in the database table called
l10n_
. It tells the DataHandler which fields of the localization records should be kept in sync if the underlying default or source record changes.state
-
-
db
¶Field Length -
- Type
- integer
- Path
- $GLOBALS['TCA'][$table]['columns'][$field]['config']
- Default
- 255
- Scope
- Proc.
New in version 13.0
As TYPO3 takes care of generating the according database field for
select
fields since TYPO3 v13, a developer can adjust the length of the database field with this option in TCA directly.The TCA config option
db
contains an integer value that is applied toField Length varchar
fields (nottext
) and defines the length of the database field. It will not be respected for fields that resolve to an integer type. Developers who wish to optimize field length can usedb
forField Length type=select
fields to increase or decrease the default length.
<?php
$selectField = [
'label' => 'My field',
'config' => [
'type' => 'select',
'renderType' => 'selectSingleBox',
'items' => [
['label' => '', 'value' => ''],
['label' => 'Some label', 'value' => 'some'],
['label' => 'Another label', 'value' => 'another'],
],
'default' => '',
'dbFieldLength' => 10,
],
];
-
default
¶ -
- Type
- string
- Path
- $GLOBALS['TCA'][$table]['columns'][$field]['config']
- Scope
- Display / Proc.
- RenderType
- all
Default value set if a new record is created. If empty, the first element in the items array is selected.
-
disable
¶No Matching Value Element -
- Type
- boolean
- Path
- $GLOBALS['TCA'][$table]['columns'][$field]['config']
- Scope
- Display
- RenderType
- all
If set, then no element is inserted if the current value does not match any of the existing elements. A corresponding options is also found in Page TSconfig.
-
field
¶Control -
-
reset
¶Selection -
- Type
- array
- Path
- $GLOBALS['TCA'][$table]['columns'][$field]['config']['fieldControl']
- Scope
- fieldControl
- Types
- Description
Render a button next to the select box to reset a changed selection to the state before it was manipulated by the user.
-
-
field
¶Information -
For details see fieldInformation.
-
field
¶Wizard -
-
default
¶Language Differences -
- Type
- array
- Path
- $GLOBALS['TCA'][$table]['columns'][$field]['config']['fieldWizard']['defaultLanguageDifferences']
For details see defaultLanguageDifferences.
-
localization
¶State Selector -
- Type
- array
- Path
- $GLOBALS['TCA'][$table]['columns'][$field]['config']['fieldWizard']['localizationStateSelector']
For details see localizationStateSelector.
-
other
¶Language Content -
- Type
- array
- Path
- $GLOBALS['TCA'][$table]['columns'][$field]['config']['fieldWizard']['otherLanguageContent']
For details see otherLanguageContent.
-
-
file
¶Folder Config -
-
allowed
¶Extensions -
- Type
- string
- Path
- $GLOBALS['TCA'][$table]['columns'][$field]['config']['fileFolderConfig']['allowedExtensions']
- Scope
- Display / Proc.
List of file extensions to select. If blank, all files are selected. Specify list in lowercase.
This configuration can be overridden by Page TSconfig.
-
depth
¶ -
- Type
- integer
- Path
- $GLOBALS['TCA'][$table]['columns'][$field]['config']['fileFolderConfig']['depth']
- Scope
- Display / Proc.
- RenderType
- all
Depth of directory recursions. Default is 99. Specify in range from 0-99. 0 (zero) means no recursion into subdirectories. Only useful in combination with property folder.
This configuration can be overridden by Page TSconfig.
-
folder
¶ -
- Type
- string
- Path
- $GLOBALS['TCA'][$table]['columns'][$field]['config']['fileFolderConfig']['folder']
- Scope
- Display / Proc.
Specifying a folder from where files are added to the item array.
Specify the folder relative to the
\TYPO3\
. See getPublicPath() . Alternatively use the prefix "EXT:" to point to an extension folder.CMS\ Core\ Core\ Environment:: get Public Path () Files from the folder are selected recursively to the level specified by depth and only files of the extensions defined by allowedExtensions are listed in the select box.
Only the file reference relative to the folder is stored.
If the files are images (gif,png,jpg) they will be configured as icons (third parameter in items array).
This configuration can be overridden by Page TSconfig.
Examples: Select SVGs recursively from a folder[ 'columns' => [ 'select_single_7' => [ 'label' => 'select_single_7 fileFolder, dummy first entry, selectIcons', 'config' => [ 'type' => 'select', 'renderType' => 'selectSingle', 'items' => [ [ 'label' => '', 'value' => 0, ], ], 'fileFolderConfig' => [ 'folder' => 'EXT:styleguide/Resources/Public/Icons', 'allowedExtensions' => 'svg', 'depth' => 1, ], 'fieldWizard' => [ 'selectIcons' => [ 'disabled' => false, ], ], ], ], ], ]
Copied! -
-
foreign_
¶table -
- Type
- string (table name)
- Path
- $GLOBALS['TCA'][$table]['columns'][$field]['config']
- Scope
- Proc. / Display
- RenderType
- all
The item-array will be filled with records from the table defined here. The table must have a TCA definition.
The uids of the chosen records will be saved in a comma separated list by default.
Use
property MM <columns-
to store the values in an intermediate MM table instead.select- singlebox- properties- mm> Deprecated since version 11.2
Usage of the
foreign_
relation with the tabletable sys_
Has been deprecated. Use TCA field type called language instead.language
[
'columns' => [
'select_single_12' => [
'label' => 'select_single_12 foreign_table selicon_field',
'config' => [
'type' => 'select',
'renderType' => 'selectSingle',
'foreign_table' => 'tx_styleguide_elements_select_single_12_foreign',
'fieldWizard' => [
'selectIcons' => [
'disabled' => false,
],
],
],
],
],
]
[
'columns' => [
'select_single_15' => [
'label' => 'select_single_15 foreign_table',
'config' => [
'type' => 'select',
'renderType' => 'selectSingle',
'foreign_table' => 'tx_styleguide_staticdata',
'MM' => 'tx_styleguide_elements_select_single_15_mm',
],
],
],
]
-
foreign_
¶table_ item_ group -
- Type
- string (column name)
- Path
- $GLOBALS['TCA'][$table]['columns'][$field]['config']
- Scope
- Proc. / Display
- RenderType
- all
New in version 13.0
This property references a specific field in the foreign table, which holds an item group identifier.
See also foreign_table_item_group.
-
foreign_
¶table_ prefix -
- Type
- string or LLL reference
- Path
- $GLOBALS['TCA'][$table]['columns'][$field]['config']
- Scope
- Display
- RenderType
- all
Label prefix to the title of the records from the foreign-table.
[
'columns' => [
'select_single_3' => [
'label' => 'select_single_3 static values, dividers, foreign_table_where',
'config' => [
'type' => 'select',
'renderType' => 'selectSingle',
'items' => [
[
'label' => 'Static values',
'value' => '--div--',
],
[
'label' => 'static -2',
'value' => -2,
],
[
'label' => 'static -1',
'value' => -1,
],
[
'label' => 'DB values',
'value' => '--div--',
],
],
'foreign_table' => 'tx_styleguide_staticdata',
'foreign_table_where' => 'AND {#tx_styleguide_staticdata}.{#value_1} LIKE \'%foo%\' ORDER BY uid',
'foreign_table_prefix' => 'A prefix: ',
],
],
],
]
-
foreign_
¶table_ where -
- Type
- string (SQL WHERE)
- Path
- $GLOBALS['TCA'][$table]['columns'][$field]['config']
- Scope
- Proc. / Display
- RenderType
- all
The items from foreign_table are selected with this
WHERE
clause. TheWHERE
clause is effectively appended to the existingWHERE
clause (which contains default constraints, such asNOT deleted
) and must begin withAND
.
The example below uses the special field quoting syntax {#...}
around
identifiers to be as DBAL-compatible as possible.
Note that ORDER BY
and GROUP BY
should NOT be quoted, since they always receive proper quoting automatically
through the API.
Markers inside the WHERE statement
It is possible to use markers in the WHERE clause:
- ###REC_FIELD_[field name]###
-
Any field of the current record.
Note
The field name part of the marker is not in upper case letters. It must match the exact case used in the database.
So for example
sys_
must be referenced usinglanguage_ uid ###REC_
FIELD_ sys_ language_ uid### - ###THIS_UID###
- Current element uid (zero if new).
- ###CURRENT_PID###
- The current page id (pid of the record).
###SITEROOT###
- ###PAGE_TSCONFIG_ID###
- A value you can set from Page TSconfig dynamically.
- ###PAGE_TSCONFIG_IDLIST###
- A value you can set from Page TSconfig dynamically.
- ###PAGE_TSCONFIG_STR###
- A value you can set from Page TSconfig dynamically.
- ###SITE:<KEY>.<SUBKEY>###
- A value from the site configuration, for example:
###SITE:
ormy Setting. category Pid### ###SITE:
.root Page Id###
The markers are preprocessed so that the value of CURRENT_PID and PAGE_TSCONFIG_ID are always integers (default is zero), PAGE_TSCONFIG_IDLIST will always be a comma-separated list of integers (default is zero) and PAGE_TSCONFIG_STR will be quoted before substitution (default is blank string).
More information about markers set by Page TSconfig can be found in the TSconfig reference.
[
'columns' => [
'select_single_3' => [
'label' => 'select_single_3 static values, dividers, foreign_table_where',
'config' => [
'type' => 'select',
'renderType' => 'selectSingle',
'items' => [
[
'label' => 'Static values',
'value' => '--div--',
],
[
'label' => 'static -2',
'value' => -2,
],
[
'label' => 'static -1',
'value' => -1,
],
[
'label' => 'DB values',
'value' => '--div--',
],
],
'foreign_table' => 'tx_styleguide_staticdata',
'foreign_table_where' => 'AND {#tx_styleguide_staticdata}.{#value_1} LIKE \'%foo%\' ORDER BY uid',
'foreign_table_prefix' => 'A prefix: ',
],
],
],
]
-
item
¶Groups -
- Type
- array
- Path
- $GLOBALS['TCA'][$table]['columns'][$field]['config']
- Scope
- Display / Proc.
- RenderType
- all
Contains an array of key-value pairs. The key contains the id of the item group, the value contains the label of the item group or its language reference.
Only groups containing items will be displayed. In the select field first all items with no group defined are listed then the item groups in the order of their definition, each group with the corresponding items.
Item groups are rendered as
<optgroup>
.Item groups can also be defined for items in foreign tables.
See also Item group API methods
[
'columns' => [
'select_single_16' => [
'label' => 'select_single_16',
'description' => 'itemGroups',
'config' => [
'type' => 'select',
'renderType' => 'selectSingle',
'items' => [
[
'label' => 'item 1',
'value' => 1,
'group' => 'group1',
],
[
'label' => 'item 2',
'value' => 2,
'group' => 'group1',
],
[
'label' => 'item 3',
'value' => 3,
'group' => 'group3',
],
[
'label' => 'item 4',
'value' => 3,
],
],
'itemGroups' => [
'group1' => 'Group 1 with items',
'group2' => 'Group 2 with no items',
'group3' => 'Group 3 with items',
],
],
],
],
]
[
'columns' => [
'select_single_17' => [
'label' => 'select_single_16',
'description' => 'itemGroups, size=6',
'config' => [
'type' => 'select',
'renderType' => 'selectSingle',
'items' => [
[
'label' => 'item 1',
'value' => 1,
'group' => 'group1',
],
[
'label' => 'item 2',
'value' => 2,
'group' => 'group1',
],
[
'label' => 'item 3',
'value' => 3,
'group' => 'group3',
],
[
'label' => 'item 4',
'value' => 3,
],
],
'itemGroups' => [
'group1' => 'Group 1 with items',
'group2' => 'Group 2 with no items',
'group3' => 'Group 3 with items',
],
'size' => 6,
],
],
],
]
-
items
¶ -
- Type
- array
- Path
- $GLOBALS['TCA'][$table]['columns'][$field]['config']
- Scope
- Display / Proc.
- RenderType
- all
Contains the elements for the selector box unless the property
foreign_
ortable special
has been set in which case automated values are set in addition to any values listed in this array.For examples see also property items of singleSelect.
-
items
¶Proc Func -
- Type
- string (class->method reference)
- Path
- $GLOBALS['TCA'][$table]['columns'][$field]['config']
- Scope
- Display / Proc.
PHP method which is called to fill or manipulate the items array. See itemsProcFunc about details.
-
localize
¶References At Parent Localization -
- Type
- boolean
- Path
- $GLOBALS['TCA'][$table]['columns'][$field]['config']
- Scope
- Proc.
Defines whether referenced records should be localized when the current record gets localized. This only applies if references are not stored using MM tables.
-
maxitems
¶ -
- Type
- integer > 0
- Path
- $GLOBALS['TCA'][$table]['columns'][$field]['config']
- Scope
- Display / Proc.
Maximum number of child items. Defaults to a high value. JavaScript record validation prevents the record from being saved if the limit is not satisfied.
-
minitems
¶ -
- Type
- integer > 0
- Path
- $GLOBALS['TCA'][$table]['columns'][$field]['config']
- Scope
- Display
Minimum number of child items. Defaults to 0. JavaScript record validation prevents the record from being saved if the limit is not satisfied.
New in version 11.4
TCA table column fields that define ['config']
can omit the
specification of the intermediate MM table layout in
ext_tables.sql. The TYPO3 database
analyzer takes care of proper schema definition.
Extensions are strongly encouraged to drop CREATE TABLE
definitions
from the ext_
file for those intermediate tables
referenced by TCA table columns. Dropping these definitions allows the Core
to adapt and migrate definitions if needed.
-
MM
¶ -
- Type
- string (table name)
- Path
- $GLOBALS['TCA'][$table]['columns'][$field]['config']
- Scope
- Proc.
This value contains the name of the table in which to store a MM relation. It is used together with foreign_table.
The database field with a MM property only stores the number of records in the relation.
Please have a look into the additional information in the MM common property description.
-
MM_
¶match_ fields -
- Type
- array
- Path
- $GLOBALS['TCA'][$table]['columns'][$field]['config']
- Scope
- Display / Proc.
Array of field => value pairs to both insert and match against when writing/reading MM relations.
-
MM_
¶opposite_ field -
- Type
- string (field name)
- Path
- $GLOBALS['TCA'][$table]['columns'][$field]['config']
- Scope
- Proc.
If you want to make a MM relation editable from the foreign side (bidirectional) of the relation as well, you need to set
MM_
on the foreign side to the field name on the local side.opposite_ field For example, if the field
companies.
is your local side and you want to make the same relation editable from the foreign side of the relation in a field calledemployees persons.
, you would need to set theemployers MM_
value of the TCA configuration of theopposite_ field persons.
field to the string "employees".employers Note
Bidirectional references only get registered once on the native side in
sys_
.refindex
-
MM_
¶opposite Usage -
- Type
- array
- Path
- $GLOBALS['TCA'][$table]['columns'][$field]['config']
- Scope
- Proc.
In a MM bidirectional relation using match fields the opposite side needs to know about the match fields for certain operations (for example, when a copy is created in a workspace) so that relations are carried over with the correct information.
MM_
is an array which references which fields contain the references to the opposite side, so that they can be queried for match field configuration.opposite Usage
-
MM_
¶table_ where -
- Type
- string (SQL WHERE)
- Path
- $GLOBALS['TCA'][$table]['columns'][$field]['config']
- Scope
- Proc.
Additional where clause used when reading MM relations.
Example:
{#uid_local} = ###THIS_UID###
Copied!The above example uses the special field quoting syntax
{#...}
around identifiers to be as DBAL-compatible as possible.
-
MM_
¶has Uid Field -
Changed in version 13.0
This setting is obsolete. Remove all occurrences of
MM_
from TCA. Thehas Uid Field uid
column is added as primary key automatically, ifmultiple = true
is set, otherwise a combined primary key of fieldsuid_
,local uid_
plus eventuallyforeign tablenames
andfieldname
is used.
-
multiple
¶ -
- Type
- boolean
- Path
- $GLOBALS['TCA'][$table]['columns'][$field]['config']
- Scope
- Display / Proc.
Allows the same item more than once in a list.
If used with bidirectional MM relations it must be set for both the native and foreign field configuration.
Changed in version 13.0
The property MM_hasUidField is obsolete. It had to be defined previously when using
multiple
.
-
read
¶Only -
- Type
- boolean
- Path
- $GLOBALS['TCA'][$table]['columns'][$field]['config']['readOnly']
- Scope
- Display
Renders the field in a way that the user can see the value but cannot edit it.
Warning
This property affects only the display. It is still possible to write to those fields when using the DataHandler.
-
size
¶ -
- Type
- integer
- Path
- $GLOBALS['TCA'][$table]['columns'][$field]['config']
- Scope
- Display
- Default
- 1
Height of the box in FormEngine. This value should not be set to a number smaller than 2.