是否有可能以某种方式在TCA中使用某种爆炸?
我所拥有的是DB字段,如下所示:
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')
),
答案 0 :(得分:1)
tca.php是一个普通的PHP文件,因此你可以在那里使用PHP。我不知道你从哪里以及如何获得你的数据库值,但如果你有,请使用它:
$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);
你可以使用类似的方法来获得showitem。
不要忘记找到一种创建数据库字段的方法,因为你没有动态的ext_tables.sql。