0

在 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->fillFoldersField 这样的函数中的当前选定值,以获取具有其他字段条件的新值

4

1 回答 1

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;
}
于 2013-01-14T13:52:09.507 回答