Hi zusammen,
ich hoffe ihr könnt mir helfen. Und zwar schreibe ich gerade eine eigene Extension, die auch Flexforms benutzt.
Nun suche ich nach einer Möglichkeit diese Flexformeinträge auszulesen.
Dabei verwende ich 2 verschiedene Flexform xmls. Zum einen eine, die angezeigt wird, wenn ich mein FE Plugin einfüge. (DIE BEKOMME ICH AUSGELESEN)
Die andere Flexform ist in meiner tca konfiguration. Die bekomme ich nicht ausgelesen und weiß nicht, wie ich da ran gehen soll...
$TCA['tt_content']['types']['list']['subtypes_addlist'][$_EXTKEY.'_pi1']='pi_flexform'; //ff
t3lib_extMgm::addPiFlexFormValue($_EXTKEY.'_pi1', 'FILE:EXT:'.$_EXTKEY . '/flexform_ds_pi1.xml'); //ff
Das ist meine erste Flexform xml
'angebotehotel' => array (
'exclude' => 0,
'label' => 'LLL:EXT:hb_hotels/locallang_db.xml:tx_hbhotels_hotels.angebotehotel',
'config' => array (
'type' => 'flex',
'ds' => array (
'default' => 'FILE:EXT:hb_hotels/flexform_tx_hbhotels_hotels_angebotehotel.xml',
),
)
),
Meine zweite und die Werte möchte ich gerne in meiner Detailview auslesen.
Über Hilfen wäre ich euch sehr dankbar.
lg
Kevin
Um den Dateinamen zu erhalten, nimm doch mal:
t3lib_div::loadTCA(DEINE_TABELLE);
$fileName = $GLOBALS['TCA'][DEINE_TABELLE]['columns']['angebotehotel']['config']['ds']['default'];
Um (dann) ein array zu erhalten:
$xmlFile= t3lib_div::getFileAbsFileName(substr($fileName,5));
if (@is_file($xmlFile)) {
$xmlString = t3lib_div::getUrl($xmlFile);
$xmlArr = t3lib_div::xml2array($xmlString);
}
Ok, das emoticon muss raus, das haut mir hier der parser rein. Statt dessen ein : und ein x
Toronto schrieb
Um den Dateinamen zu erhalten, nimm doch mal:
t3lib_div::loadTCA(DEINE_TABELLE);
$fileName = $GLOBALS['TCA'][DEINE_TABELLE]['columns']['angebotehotel']['config']['ds']['default'];
Um (dann) ein array zu erhalten:
$xmlFile= t3lib_div::getFileAbsFileName(substr($fileName,5));
if (@is_file($xmlFile)) {
$xmlString = t3lib_div::getUrl($xmlFile);
$xmlArr = t3lib_div::xml2array($xmlString);
}
Ok, das emoticon muss raus, das haut mir hier der parser rein. Statt dessen ein : und ein x
Jetzt muss ich doch nochmal kurz nachhaken, steh einfach auf dem Schlauch 🙁
Habe jetzt meine exttables.php folgendermaßen erweitert
t3lib_div::loadTCA('tx_hbhotels_hotels');
$fileName = $GLOBALS['TCA']['tx_hbhotels_hotels']['columns']['angebotehotel']['config']['ds']['default'];
$xmlFile= t3lib_div::getFileAbsFileName(substr($fileName,5));
if (@is_file($xmlFile)) {
$xmlString = t3lib_div::getUrl($xmlFile);
$xmlArr = t3lib_div::ml2array($xmlString);
}
Nun bin ich wohl aber einfach unfähig nachher die xml in meine class.tx_hbhotels_pi1.php auszulesen....
Hättest mir vielleicht nochmal nen kleinen Tipp??
liebe Grüße
Kevin
Verwende den Code in der class.tx_hbhotels_pi1.php.
Toronto schrieb
Verwende den Code in der class.tx_hbhotels_pi1.php.
Hey Toronto,
jetzt wirst du wahrscheinlich gleich die Krise bekommen....
Hab den COdeschnipsel nun in meiner class.tx_hbhotels_pi1.php verwendet.
Habe mir auch mal das komplette Array mit print_r anzeigen lassen. Wie komme ich jetzt aber an die einzelnen Werte ran?!? Gibts es ja schon irgendwelche Vorgaben um mir das Array ähnlich wie man sonst mit Flexforms umgeht auszugeben ($this->lConf['blabla'])
lg
Kevin
Hallo,
ich hänge mich hier mal dran, denn ich habe ein Problem mit dem Auslesen unter T3 Version 4.5.
Ich habe ein ältere (eigene) Extension in mein neues System eingebunden.
Leider erhalte ich keinerlei Ausgaben aus dem TCA.
Ich verwende meine Funktion auch in älteren T3 Versionen ohne Probleme.
hat sich da bezgl. der Zugriffe vielleicht etwas geändert.
Evt. die includes o.ä.?
Ich versuche mit folgendem Code das TCA meiner Extension auszulesen.
//$GLOBALS['TSFE']->includeTCA();
t3lib_div::loadTCA('tx_pckids_eintrag');
//$hauptkategorie = $GLOBALS['TCA']['tx_pckids_eintrag']['columns']['config']['items'];;<- ist Mehrfachauswahlfeld
oder auch
$hauptkategorie = $GLOBALS['TCA']['tx_pckids_eintrag']['columns']['entryname']; <- sind nur die Namen
Auch wenn ich $GLOBALS['TSFE']->includeTCA() mit dazuschreibe, ich bekomme keinerlei Daten.
SQL Error -> nichts
Debug auf $hauptkategorie -> leer
print_r auf $hauptkategorie -> leer
Jemand eine Idee?
Bin etwas weiter!
Habe mich Schritt für Schritt vorgearbeitet.
Wenn ich meine TCA Abfrage etwas kürze, dann erhalte ich mit dem debug darauf einige Ausgaben.
Nach $GLOBALS['TCA']['tx_pckids_eintrag']['columns'] werden mir dann alle Tabellenspalten angezeigt.
Der nächste Schritt wäre jetzt die Spalte anzugeben, also "entryname" an die TCA Abfrage zu hängen.
Die Ausgabe teilt sich dann auf exclude, label, config auf.
Die Einträge für Label wären ja jetzt meine gewünschten Ausgaben.
Leider kommt hier aber kein Array zurück, sondern nur
| debug ||LLL:EXT:pckids/locallang_db.xml:tx_pckids_eintrag.entryname|
Ab hier brauche ich einen Schubser in die richtige Richtung #paralyzed#
Vielen Dank
Der abgefragte Wert ist ein String und dieser wird auch ausgegeben.
Aber wenn es um Label im FE-Plugin geht: Warum verwendest Du dafür nicht die zu Deinem plugin gehörende locallang-Datei und fragst die Werte über die entsprechende Funktion pi_getLL() ab?
Dürfte ich vlt. nochmal kurz dazwischen fragen, bzgl. meiner Frage etwas weiter oben?
Ich komme einfach nicht weiter 🙁
Hallo Kevin,
im obigen Beispiel ist $xmlArr ein Array, auf dessen Werte wie bei anderen Arrays auch zugegriffen werden kann.
http://www.php-einfach.de/php-tutorial/php-array.php
Habs jetzt übrigens so gelöst, wie man das mit Flexforms macht, die beim Laden des Plugins schon vorher in der exttables.php konfiguriert werden.
Habe aus dem DB Feld die Flexform in ein Array umgewandelt
$flexangebote = t3lib_div::xml2array($hoteltabelle['angebotehotel']);
und dann einfach die init() Methode, wie man sie sonst benutzt verwendet.
function initdbflex($flex){
$this->angebote = array();
foreach ( $flex['data'] as $sheet => $data ){
foreach ( $data as $lang => $value ){
foreach ( $value as $key => $val ){
$this->angebote[$key] = $this->pi_getFFvalue($flex, $key, $sheet);
}
}
}
}
lg
Kevin