[TYPO3-german] Flexform, itemsProcFunc, abhängige Felder

Jan Kornblum jan.kornblum at gmx.de
Mon Aug 6 00:32:09 CEST 2012


Hi Gruppe,

in der Flexform-Konfig eines Plugins lege ich in einem 1. Feld den 
Speicherort der Datensätze fest ("recordsPid"), also analog zum 
klassischen tt_content-Feld "pages".

Nun gibt es ein 2. Feld (type=select) in der Flexform, in dem man 
einzelne Datensätze selektieren können soll. Dieses Feld soll natürlich 
nur diejenigen Datensätze auflisten, die in dem in Feld 1 definierten 
Sysfolder liegen.

Und hier finde ich keine vernünftige Lösung zu Befüllen des 2. Feldes:

1. Es gibt keinen Marker in der Flex für ein "foreign-table-where", der 
auf ein anderes Feld der gleichen Flexform zugreifen kann (auch 
###REC_FIELD_xxx### geht hier ja nicht)

2. Der Umweg über eine itemsProcFunc geht vom Ansatz zwar aber 
innerhalb der itemsprocFunc kann ich mehr schlecht als recht auf das 1. 
Feld zugreifen:

  <config>
    <type>select</type>
    <multiple>1</multiple>
    <size>5</size>
    <maxitems>10</maxitems>
    <autosizemax>5</autosizemax>
    <allowNonIdValues>1</allowNonIdValues>
    <items type="array"></items>
    
<itemsProcFunc>tx_ext_addFieldsToFlexForm->addFields</itemsProcFunc>
</config>

...innerhalb der tx_ext_addFieldsToFlexForm->addFields() dann...

    $flex = t3lib_div::xml2array($config['row']['pi_flexform']);
    $recordsPid = $flex['data']['sDEF']['lDEF']['recordsPid']['vDEF'];
    t3lib_div::debug($recordsPid);

...allerdings wird die itemsprocFunc im BE dabei komischwerweise 
zweimal aufgerufen, einmal ist "$recordsPid=156", beim zweiten Mal ist 
"$recordsPid=pages_156|Pagetitle", was man ja nicht wirklich gescheit 
"verwerten" kann.

Wie macht ihr sowas? Ist ja eigentlich nicht gerade ein exotisches 
Problem, oder? Ich möchte "recordsPid" auch nicht über TSConfig setzen 
oder etwas wie "allgemeine Datensatzsammlung" verwenden, um das Plugin 
"einfach" zu halten...

Danke und gute Nacht, Jan




More information about the TYPO3-german mailing list