0

フレックスフォームでは、次のような動的フィールドがあります。

<dynField>
    <TCEforms>
        <onChange>reload</onChange>
        <label>SELECT FOLDER</label>
        <config>
            <type>select</type>
                    <itemsProcFunc>tx_myext_fillBEData->fillFoldersField</itemsProcFunc>
        </config>
    </TCEforms>
</dynField>

それはうまく機能し、実際にランタイム値をそこに入れることができます。次の動的フィールドのアイテムが変更されたときにページをリロードするようにonChangereloadプロパティを設定し、現在のフィールドに応じた値をロードします。

問題は、それに応じてデータを入力するために、他のフィールドから選択されたアイテムを取得できないように見えることです。

私はそれを参照せずにたくさん検索しました。

ヒントはありますか?

更新1:取得するアイテムの数がわからないため、次のフィールドでdisplayCondを使用できません。そのため、すべての可能性を備えた汎用XMLをコーディングしてdisplayCondを使用することはできません。

更新2:必要なのは、tx_myext_fillBEData-> fillFoldersFieldなどの関数で現在選択されている値を取得して、他のフィールド条件で新しい値を取得する方法です。

4

1 に答える 1

3

私はそれをなんとか解決し、それを共有したいと思います。$ configパラメーター(最初のパラメーター)には、現在のフレックスフォームで選択されたデータを持つXMLが含まれています。次の配列を使用してアクセスできます。

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 に答える