Typo3 TCA 阵列可能发生场爆炸吗?

问题描述 投票:0回答:1

是否有可能在 TCA 中使用某种爆炸?

我拥有的是一个看起来像这样的数据库字段:

10;20;30;40-80

现在最好有某种爆炸来使用新的输入字段或复选框或“;”之间的每个字符串。 :

        'number10' => array(        
                    'exclude' => 0,     
                    'label' => 'LLL:EXT:mq_programm/locallang_db.xml:tx_mqprogramm_form.number',        
                    'config' => array(
                        'type' => 'input',
                        'size' => '30',
                    )
                ),
        'number20' => array(        
                    'exclude' => 0,     
                    'label' => 'LLL:EXT:mq_programm/locallang_db.xml:tx_mqprogramm_form.number',        
                    'config' => array(
                        'type' => 'input',
                        'size' => '30',
                    )
                ),
        'number30' => array(        
                    'exclude' => 0,     
                    'label' => 'LLL:EXT:mq_programm/locallang_db.xml:tx_mqprogramm_form.number',        
                    'config' => array(
                        'type' => 'input',
                        'size' => '30',
                    )
                ),
        'number40-80' => array(     
                    'exclude' => 0,     
                    'label' => 'LLL:EXT:mq_programm/locallang_db.xml:tx_mqprogramm_form.number',        
                    'config' => array(
                        'type' => 'input',
                        'size' => '30',
                    )
                ),

等等...当然我也需要它们在showitem数组中:

'types' => array(
    '0' => array('showitem' => 'hidden;;1-1-1, number10, number20, number30, number40-80')
),
php arrays typo3
1个回答
1
投票

tca.php 是一个普通的 PHP 文件,因此您可以在其中使用 PHP。我不知道你从哪里以及如何获得你的 DB 值,但如果你有它,请使用它:

$fieldIdentifiers = '10;20;30;40-80';
$fieldIdentifierArray = explode(';', $fieldIdentifiers);

$dynamicFields = array();
foreach ($fieldIdentifierArray as $fieldIdentifier) {
  $dynamicFields['number' . $fieldIdentifier] = array(
    'exclude' => 0,
    'label' => 'LLL:EXT:mq_programm/locallang_db.xml:tx_mqprogramm_form.number' . $fieldIdentifier,
    'config' => array(
      'type' => 'input',
      'size' => '30',
    ),
  );
}

然后将动态字段与现有字段合并

$TCA['tx_mqprogramm_form']['columns'] = array_merge($TCA['tx_mqprogramm_form']['columns'], $dynamicFields);

您可以对显示项目使用类似的方法。

不要忘记找到一种创建数据库字段的方法,因为你不能拥有动态的 ext_tables.sql。

© www.soinside.com 2019 - 2024. All rights reserved.