将动态数据设置到另一个字段时获取另一个字段值

时间:2013-01-14 12:36:20

标签: php typo3

在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 以获取其他字段条件的新值。

1 个答案:

答案 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;
}