[Frage] TemplaVoila Feld als Parameter an PHP-Funktion mit Typoscript [Gelöst] TYPO3-Version: 4.6.3

  • S4SC-4 S4SC-4
    TYPO3-Anwärter
    0 x
    4 Beiträge
    0 Hilfreiche Beiträge
    16. 09. 2015, 12:38

    Guten Tag allerseits,
    ich hoffe ich habe den Thread an der korrekten Stelle im Forum erstellt, ich denke es passt besser zu Typoscript als zu TemplaVoila.

    Ich suche seit etlichen Stunden nach einer Lösung für mein Typoscript Problem aber konnte bisher nichts finden, deshalb hoffe ich hier eventuell Hilfe zu bekommen.

    Zum Problem:
    Ich habe mit TemplaVoila ein neues Datenelement(FCE) angelegt, in dem ein Pfad zu einem Ordner angegeben werden soll.
    Dieser Pfad soll als Parameter an eine PHP-Funktion übergeben werden.

    Das funktioniert mit statischen Werten (Pfad manuell eingetragen) auch super.
    Sobald ich aber dynamisch den Inhalt des TemplaVoila Feldes an PHP übergeben will, funktioniert dies nicht mehr.

    Folgend der Auszug des angelegten Feldes "dlfiles" aus TemplaVoila in XML:

    1. <dlfiles type="array">
    2. <tx_templavoila type="array">
    3. <title>Files</title>
    4. <sample_data type="array">
    5. <numIndex index="0"></numIndex>
    6. </sample_data>
    7. <eType>input</eType>
    8. <TypoScript>
    9.  
    10. 10 = TEXT
    11. 10.field = dlfiles
    12.  
    13. 20 {
    14. userFunc = user_linkFiles
    15. includeLibs = fileadmin/templates/scripts/filelink.php
    16. a.value.data = dlfiles
    17. }
    18. </TypoScript>
    19. <proc type="array">
    20. <HSC>0</HSC>
    21. <stdWrap></stdWrap>
    22. <int>0</int>
    23. </proc>
    24. <preview></preview>
    25. </tx_templavoila>
    26. <TCEforms type="array">
    27. <label>Files</label>
    28. <config type="array">
    29. <type>input</type>
    30. <size>48</size>
    31. <eval>trim</eval>
    32. </config>
    33. </TCEforms>
    34. </dlfiles>

    Bei "10" funktioniert der Zugriff auf den Inhalt des Feldes "dlfiles"... Dort gibt er den Pfad korrekt auf der Webseite aus.

    Bei "20" wird die Variable a aber leider nicht mit dem Inhalt des dlfiles-Feldes gefüllt, sondern es wird einfach nur der text
    "dlfiles" ausgegeben.

    Habe schon viele Dinge ausprobiert aber bekomme es nicht hin.
    Ist dies überhaupt an der Stelle möglich?
    Falls nein, wie kann ich es sonst lösen, das eine PHP-Funktion aufgerufen wird welche automatisch als Parameter den im Backend angelegten Pfad übergeben bekommt?

    Vielen vielen Dank im Voraus für jegliche Hilfe.

    Liebe Grüße,
    Sascha

  • S4SC-4 S4SC-4
    TYPO3-Anwärter
    0 x
    4 Beiträge
    0 Hilfreiche Beiträge
    17. 09. 2015, 15:53 - Lösung

    Genau, hatte auf die Variable a in PHP zugegriffen wie du es geschrieben hast, da kam "dlfiles" wieder als Text.

    Ich habe es nun doch lösen können...
    Mit var_dump($this) habe ich das Klassenobjekt ausgelesen. Im data-Array war mein Feld vorhanden und korrekt gefüllt, musste dann nur noch rausfinden wie ich in PHP darauf zugreifen kann.

    Habe es dann so gemacht:

    1. $path = $this->cObj->data['dlfiles'];

    Und das gibt mir den gerenderten Wert aus dem Backend.
    Eigentlich total simpel, aber wenn noch die Erfahrung fehlt ist es dann doch gar nicht mal so einfach. :-)

    Ich danke Dir trotzdem für deine Hilfe !

    Liebe Grüße,
    Sascha


  • 1
  • S4SC-4 S4SC-4
    TYPO3-Anwärter
    0 x
    4 Beiträge
    0 Hilfreiche Beiträge
    16. 09. 2015, 12:45

    Zur Info:
    Auch wenn ich es mit "20.field = dlfiles" versuche und in PHP per $conf['field'] darauf zugreife, erhalte ich nur den Text "dlfiles" und nicht den im Backend hinterlegten Wert.

  • jenses jenses
    Flash Gordon
    0 x
    3087 Beiträge
    106 Hilfreiche Beiträge
    17. 09. 2015, 09:48

    Zitiert von: S4SC-4
    Zur Info:
    Auch wenn ich es mit "20.field = dlfiles" versuche und in PHP per $conf['field'] darauf zugreife, erhalte ich nur den Text "dlfiles" und nicht den im Backend hinterlegten Wert.

    ... in PHP müßte es dann ja auch $conf['20'] lauten

  • S4SC-4 S4SC-4
    TYPO3-Anwärter
    0 x
    4 Beiträge
    0 Hilfreiche Beiträge
    17. 09. 2015, 11:43

    ... in PHP müßte es dann ja auch $conf['20'] lauten

    Da kommt "Null" raus.
    Wenn ich das richtig verstanden habe sind wir an der Stelle im PHP in 20 "drin", weil wir PHP von 20 aus aufrufen. Auf 10 könnte ich zum Beispiel nicht zugreifen.

    Deswegen kann ich mit $conf['field'] dann auf das field von 20 zugreifen.

    Die Auflösung des "dlfiles"-Feldes wird so anscheinend nicht funktionieren, dazu müsste 20 = TEXT sein und nicht 20 = USER_INT.

    Hat vielleicht jemand noch eine Idee?

    Liebe Grüße

    Edit: ÜBrigens ist es Typo 4.6.3.

  • Chrissli Chrissli
    Jedi-General
    0 x
    1015 Beiträge
    28 Hilfreiche Beiträge
    17. 09. 2015, 14:42

    Ich weiß jetzt nicht, wie DCE funktioniert, aber wenn das analog zu den anderen USER-Objecten ist, dann kann so meines wissens nach auch dlfiles nicht aufgelöst werden, ausser evtl als Text.

    1. 10 = TEXT
    2. 10.field = dlfiles
    3.  
    4. 20 {
    5. userFunc = user_linkFiles
    6. includeLibs = fileadmin/templates/scripts/filelink.php
    7. a.value.data = dlfiles
    8. }

    Zugreifen würdest du auf den Wert in diesem Fall so:
    1. function user_linkFiles($content,$conf) {
    2. $dlfiles = $conf['a.']['value.']['data'];
    3. }

    Aber dann steht da in $dlfiles nur der String "dlfiles". Damit da was halbwegs sinnvolles drin steht müsste der Wert z.b. mit cObjGetSingle gerendert werden. Funktioniert denn ein Funktionsaufruf ohne Klasse aktuell noch?
    Wie gesagt, mit DCE kann sich das natürlich auch anders verhalten, dann nehme ich alles zurück.

    God's in his heaven, all's right with the world

  • S4SC-4 S4SC-4
    TYPO3-Anwärter
    0 x
    4 Beiträge
    0 Hilfreiche Beiträge
    17. 09. 2015, 15:53

    Genau, hatte auf die Variable a in PHP zugegriffen wie du es geschrieben hast, da kam "dlfiles" wieder als Text.

    Ich habe es nun doch lösen können...
    Mit var_dump($this) habe ich das Klassenobjekt ausgelesen. Im data-Array war mein Feld vorhanden und korrekt gefüllt, musste dann nur noch rausfinden wie ich in PHP darauf zugreifen kann.

    Habe es dann so gemacht:

    1. $path = $this->cObj->data['dlfiles'];

    Und das gibt mir den gerenderten Wert aus dem Backend.
    Eigentlich total simpel, aber wenn noch die Erfahrung fehlt ist es dann doch gar nicht mal so einfach. :-)

    Ich danke Dir trotzdem für deine Hilfe !

    Liebe Grüße,
    Sascha

  • 1