Zum Inhalt springen

Änderung in pi_flexform_ds.xml wird nicht überschrieben

Erstellt am 6. März 2009 · 2 Antworten · letzte Antwort am 6. März 2009

Tags: FlexForms, Frage

koiweb ·

tach zsam,
beim schreiben eines FE Plugin kommts öfter vor, daß ich die Daten in der pi1/flexform_ds.xml ändern muss.
simples beispiel:

<tx_koi_wetter>
  <root>
    <tceforms>
      <sheettitle>LLL:EXT:koi/pi1/locallang.xml:pi_flexform_sheet_wetter</sheettitle>
    </tceforms>
    <type>array</type>
    <el>
      <date_time>
        <tceforms>
        <label>LLL:EXT:koi/pi1/locallang.xml:pi_flexform_wetter_date_time</label>
        <config>
          <type>check</type>
          <items type="array">
            <numindex index="0" type="array">
              <numindex index="0"></numindex>
              <numindex index="1">1</numindex>
            </numindex>
          </items>
        </config>
        </tceforms>
      </date_time>

daraus wird der date_time abschnitt gelöscht.
Anschließend greife ich (nach löschen aller cashes) über

$flexform = $this->cObj->data['pi_flexform'];

im Quelltext darauf zu und welch Wunder - die alte Kamelle ist immer noch vorhanden.
Schau ich dann in die tt_content pi_flexform rein, sehe ich den alten Wert da auch noch rumlungern.
Meine ext_tables.php sieht so aus:

t3lib_div::loadTCA('tt_content');
$TCA['tt_content']['types']['list']['subtypes_excludelist'][$_EXTKEY.'_pi1']='layout,select_key,pages,recursive';
$TCA['tt_content']['types']['list']['subtypes_addlist'][$_EXTKEY.'_pi1']='pi_flexform';
t3lib_extMgm::addPiFlexFormValue($_EXTKEY.'_pi1', 'FILE:EXT:'.$_EXTKEY.'/flexform_ds.xml');

wie der Name vermuten lässt ist t3lib_extMgm::addPiFlexFormValue dafür zuständig neue Werte hinzuzufügen. Aber wer oder was beseitigt den Müll.
In class.t3lib_extmgm.php gibts jedenfalls kein replacePiFlexFormValue() oder so ähnlich. Die Daten per Hand aus der DB zu löschen kann doch eigentlich nicht das Mittel der Wahl sein. Habe danach schon hier im Forum gesucht und rumgegoogelt bin aber bisher nicht fündig geworden.
Ist das Verhalten so gewünscht, oder noch nicht aufgefallen, oder der Fehler zwischen den @O@ ?
Gruss - koi
(Typo3 4.2.5 - das Verhalten war in älteren Versionen genauso)

ThBodi ·

Das ist leider normal und ein fehlendes Feature von TYPO3. Beim Schreiben des Flexform-XML werden nicht mehr benötigte/vorhandene Werte nicht gelöscht.

Du kannst jetzt (wenn das überhaupt wirklich unbedingt nötig ist) das Flexform-Feld in der Datenbank per Hand löschen, oder die Bereinigung des XML mittels eines entsprechenden Hooks durchführen.

koiweb ·

danke für die schnelle Antwort,
soll denn das tatsächlich so bleiben?
- ist schon ziemlich verwirrend, wenn ich insbesondere bei mehreren Änderungen erstmal überhaupt keine Reaktion feststellen kann, da die hinzugefügten Variablen nicht dort erscheinen, wo ich sie erwarte und im speziellen Fall auch meine darüber erstellten arrays zerschossen haben - habe darüber ziemlich lange Zeit der Fehlersuche verbraten.
Die Flexform Konfiguration erscheint mir für potentielle Redakteure die das Plugin benutzen oft als zumutbarer denn die TS Alternative und deshalb solls auch so bleiben.
Wie bereits erwähnt - es müsste wohl die t3lib_extMgm::addPiFlexFormValue ergänzt, umgeschrieben oder ersetzt werden, oder ist da sonst noch was zu beachten woran ich im Moment vielleicht nicht denke?
Gruss - koi