Important: #102904 - Use TCA group field as foreign selector
See forge#102904
Description
When using TCA type
inline, developers have the possibility to use the
"foreign selector" feature by defining the
foreign_ option,
pointing to a field on the foreign (child) table. This way, editors can
use the corresponding selector field to choose existing child records,
to create a new inline relation. This can be further extended, using the
use appearance option, which allows to modify the child record
via the parent record globally.
The field referenced in
foreign_ is usually a field with TCA type
select, using the foreign_ option itself to provide the corresponding
items to choose.
It's nevertheless also possible to use a TCA type
group field as
foreign_. In this case, the child records have to be selected
from the table, defined via the
allowed option. For this use case,
only one table can be defined. This means, the first table name in
allowed is taken, no matter if there are multiple table names defined.
Note
This unfortunately does not work out of the box for Extbase. Therefore, the
corresponding table has to be defined additionally via the
foreign_
option. This option is only used as a
workaround
by Extbase and is not sufficient for the TYPO3 Form editor, which will always
just consider the value from the
allowed option.
Example using an intermediate table and the
use feature:
// Inline field in parent table "tx_extension_inline_usecombination"
'inline' => [
'label' => 'inline',
'config' => [
'type' => 'inline',
'foreign_table' => 'tx_extension_inline_usecombination_mm', // Referencing the intermediate table
'foreign_field' => 'group_parent',
'foreign_selector' => 'group_child',
'foreign_unique' => 'group_child',
'appearance' => [
'useCombination' => true,
],
],
],
// Reference fields in intermediate table "tx_extension_inline_usecombination_mm"
'group_parent' => [
'label' => 'group parent',
'config' => [
'type' => 'select',
'renderType' => 'selectSingle',
'foreign_table' => 'tx_extension_inline_usecombination', // Referencing the parent table
],
],
'group_child' => [
'label' => 'group child',
'config' => [
'type' => 'group',
'allowed' => 'tx_extension_inline_usecombination_child', // Referencing the child table
'foreign_table' => 'tx_extension_inline_usecombination_child', // ONLY USED FOR extbase!
],
],
// Child table "tx_extension_inline_usecombination_child" does not have any relation fields