在flexforms中,我有一个动态字段,如:
<dynField>
<TCEforms>
<onChange>reload</onChange>
<label>SELECT FOLDER</label>
<config>
<type>select</type>
<itemsProcFunc>tx_myext_fillBEData->fillFoldersField</itemsProcFunc>
</config>
</TCEforms>
</dynField>
它运行良好,我实际上可以将运行时值放在那里。 我将onChange reload属性设置为重新加载页面,当下一个动态字段的项目更改时,将根据当前值加载值。
问题是我似乎无法从其他字段中获取所选项目以便相应地填充数据。
我搜索了很多而没有提及。
任何提示?
更新1:我不能在下一个字段上使用displayCond,因为我根本无法知道我将获得多少项,因此我无法使用所有可能性编写通用XML并使用displayCond。
更新2:所以我需要的是在tx_myext_fillBEData-&gt; fillFoldersField之类的函数中获取当前选定值 in 以获取其他字段条件的新值。
答案 0 :(得分:3)
我设法解决了这个问题,我想分享一下。 $ config参数(第一个参数)包含一个XML,它具有当前的flexform选择数据。 您可以通过以下数组访问它:
t3lib_div::xml2array($config['row']['pi_flexform']);
这样我们就可以收集所需的数据:
public function fillFoldersField($config) {
$piValues = t3lib_div::xml2array($config['row']['pi_flexform']);
if (is_array($piValues)) {
$FieldData = $piValues['data']['SHEETNAME']['lDEF']['FIELDNAME']['vDEF'];
//Inside FieldData we will have the selected data from any field we specified before
}
else {
//An error, there is no data, for example, the first load, without user interaction
}
//Below this, we insert the other values
return $config;
}