TCA foreign_table如何为select:options选择标签

时间:2019-01-10 15:34:19

标签: typo3

$temporaryColumns = array(
    'my_related_item' => array(
        'label' => 'Related s',
        'l10n_mode' => 'mergeIfNotBlank',
        'config' => [
            'type' => 'select',
            'renderType' => 'selectMultipleSideBySide',
            'items' => [
            ],
            'foreign_table' => 'tx_some_domain_model_item',
            'MM' => 'tx_some_domain_model_mm',
            'itemsProcFunc' => 'my\ext\TCA\SelectProcFunc->prepareItems',
            'enableMultiSelectFilterTextfield' => true,
            'size' => 10,
            'autoSizeMax' => 30,
            'maxitems' => 9999,
        ],
    ),
);

应该是目标对象提出的可能的标签,我想将其用作标签。但是无法在文档中找到。

例如-默认情况下,我进入selectbox:option

{value = uid
label = title }

但我需要

{value = uid
label = clear_name}

更新:

我发现要仅在seelctbox中获得自定义标签,就不能使用

'ctrl' => [
    'label' => 'clear_name',
], 

因为这将更改列表的全局性-但我只需要在选择框中输入即可。所以我在我的TCA中尝试了其他解决方案

'itemsProcFunc'=>'TBF \ TbfPackage \ TCA \ SelectProcFunc-> prepareItems',

和SelectProcFunc.php

namespace my\ext\TCA;
/**
 * Description of SelectProcFunc
 *
 * @author Oleg Karun
 */
class SelectProcFunc  {

    public function prepareItems(&$param) {
        debug($param);

        $newItems = [];
        foreach ($param['items'] as $item) {
            $newItem = [
                0 => $item->getUid(),
                1 => $item->getClearName()
            ];
            $newItems[] = $newItem;
        }
        //$param['items'] = $newItems;
        return $param;
    }

}

问题$ param ['items']为空-我发现了相同的问题https://forge.typo3.org/issues/85622。错误或我做错了什么?

1 个答案:

答案 0 :(得分:1)

对于foreign_table,总是使用外部表的label来呈现可用项目的列表。因此,如果您想要其他字段,则需要更改该选项。