Zum Inhalt springen

Daten aus einer Flexform für mehrere FE-Plugins nutzen

Erstellt am 12. Oktober 2006 · 14 Antworten · letzte Antwort am 18. Oktober 2012

Tags: FlexForms, Frage

steffenk ·

ich hab mal nachgeschaut in der typo3/sysext/cms/tslib/class.tslib_pibase.php
Da sieht die Funktion so aus:

function pi_getFFvalue($T3FlexForm_array,$fieldName,$sheet='sDEF',$lang='lDEF',$value='vDEF')	{
		$sheetArray = is_array($T3FlexForm_array) ? $T3FlexForm_array['data'][$sheet][$lang] : '';
		if (is_array($sheetArray))	{
			return $this->pi_getFFvalueFromSheetArray($sheetArray,explode('/',$fieldName),$value);
		}
	}

Also ist das Problem, das er bereits ein Array erwartet. Dieses wird in der initPIflexForm gemacht, so gehts:

$this->cObj->data[$field] = t3lib_div::xml2array($this->cObj->data[$field]);

also musst Du das mit Deinem Inhalt ebenso machen 😉

Php_Diver ·

hallo steffen,

genau was du gelöst hast, brauche ich auch 🙂

allerdings steht im lösungscode:

$this->cObj->data[$field] = t3lib_div:<img src="typo3conf/ext/mm_forum//res/smilies/icon_mad.gif" alt="icon_mad.gif" />ml2array($this->cObj->data[$field]);

nach t3lib_div: steht <img src="typo3conf/ext/mm_forum//res/smilies/icon_mad.gif" alt="icon_mad.gif" /> ??

was muss da wirklich drinstehen?

ich muss die variable "bildbeschreibung" aus einer anderen seite auslesen.

danke dir

LuP ·

Hallo,

Php_Diver schrieb

hat keiner eine idee, was statt dem <img> da stehen muss?

die gesuchte Funktion müsste xml2array() heissen.

VG,
LuP

Php_Diver ·

Hallo LuP,

hmm, dann müsste es ja (ich mach mal nach : ein leerzeichen rein, damit nicht wieder ein img erscheint)

$this->cObj->data[$field] = t3lib_div: xml2array(): xml2array($this->cObj->data[$field]);

lauten, und das ist es nicht

und nur

$this->cObj->data[$field] = t3lib_div:: xml2array($this->cObj->data[$field]);

bringt "Invalid document end"

die Frage ist, wo ich mein db-feld angebe, damit ich nur diesen ausgegeben bekomme.

LuP ·

Hallo,

Php_Diver schrieb
$this->cObj->data[$field] = t3lib_div:: xml2array($this->cObj->data[$field]);

OK

Php_Diver schrieb

bringt "Invalid document end"

Lass mal $this->cObj->data[$field] ausgeben.

VG,
LuP

Php_Diver ·

Hiho

mit:

$uid = 261; // Hier die ID des Elements
$row = $this->pi_getRecord(tt_content,$uid);
$flexformConf = $row['pi_flexform'];

bekomme ich die komplette xml-flex-form

<T3FlexForms>
    <data>
        <sheet index="sDEF">
            <language index="lDEF">
                <field index="bilderliste">
                    <value index="vDEF">0,  bla, bla</value>
                </field>
                <field index="music">
                    <value index="vDEF">fileadmin/templates/musik/01.mp3,fileadmin/templates/musik/02.mp3,fileadmin/templates/musik/03.mp3</value>
                </field>
                <field index="pictures">
                    <value index="vDEF">fileadmin/templates/galerie/bild_1.png,fileadmin/templates/galerie/bild_2.png,fileadmin/templates/galerie/bild_3.png</value>
                </field>
                <field index="bildzitat">
                    <value index="vDEF">Text1
Text2
Text3</value>
                </field>
                <field index="bildbeschreibung">
                    <value index="vDEF">Inspired by Wolfsheim MIX 12/2003 ... usw.

die frage ist jetzt, wie greife ich gezielt (z.B.) auf die inhalte von <field index="bildzitat"> zu?

:-)

LuP ·
Php_Diver schrieb

die frage ist jetzt, wie greife ich gezielt (z.B.) auf die inhalte von <field index="bildzitat"> zu?

$flexformArr = t3lib_div:: xml2array($flexformConf);
$bildZitat = $this->pi_getFFvalue($flexformArr, 'bildzitat', 'sDEF', 'lDEF', 'vDEF');

VG,
LuP