Zum Inhalt springen

TypoSkript Variable in TCA-UserFunc abfragen

Erstellt am 9. Februar 2015 · 2 Antworten · letzte Antwort am 9. Februar 2015

Tags: TCA, Frage

jp_dev ·

Hallo zusammen,

ich stehe vor folgender Herausforderung:
Wir legen gerade eine etwas ältere Extension neu auf und wollen diese so dynamisch wie möglich gestalten, d. h. keine Hartprogrammierten Texte mehr, keine feste Pfade, etc.
Die Extension soll Produkte nach bestimmten Kategorien ausgeben. Dazu kommt ein Download-Bereich in dem aus einem ausgewählten Ordner alle Dateien zu Download angeboten und dessen Unterordner in eigenen Reitern ausgegeben werden.

Nun ist es so, dass im Backend per TCA beim Anlegen der Produkte ein Drop-Down zwei Ordner-Ebenen eines bestimmten Pfades zur Auswahl stellen sollen. Das hat über ein UserFunc auch soweit geklappt. Allerdings nur, wenn ich den Pfad hart im PHP stehen habe.
Da es aber verschiedene Ober-Kategorien gibt und der Redakteur nur aus seiner eigenen die Ordner wählen soll, müsste der Pfad vom Admin pro Seitenbaum vorgegeben werden können.
Ich habe bereits eine entsprechende Typoskript-Variable angelegt, aber kann diese irgendwie in der UserFunc nicht auslesen.
$TCA und $GLOBALS[‚TSFE‘] sind beide leer, in den anderen „Standard“ abfragen ist die Variable schlicht weg nicht zu sehen.
Erstellt wurde das Projekt mit „Extension Builder 6.2.0“

		'folder_link' => array(
			'exclude' => 1,
			'label' => 'LLL:EXT: XXX/Resources/Private/Language/locallang_db.xlf:tx_XXX_domain_model_product.folder_link',
			'config' => array(
				'type' => 'select',
                'items' => array(
                    array('Bitte wählen A','XYZ'),
                ),
				'size' => 1,
				'maxitems' => 1,
                'itemsProcFunc' => 'TYPO3\XXX\Utility\beUserFunc->getFileFolders',
			),
		),
plugin.tx_XXX{
	features {
		getFilePath = fileadmin/user_upload/Products
	}
}

Meine Frage wäre daher: Wie bekomme ich die TS-Variabele in mein PHP?
Oder gibt es eine andere Lösung, die man hier verwendet könnte/müsste?

Viele Grüße und schon mal vielen Dank
jp_dev

toifel ·

Normalerweise übergibt Typo3 automatisch alles, was du in diesem Fall brauchst.
Dazu sind die 2 Variablen gedacht, die du hoffentlich auch in getFileFolders() bereit stellst.

Sollte in etwa so aussehen:

  function main(&$conf, &$pObj) {
    ...
  }

Über $pObj solltest du alles abfragen können, was du brauchst.. "$pObj->cachedTSconfig" hieß die Funktion, als ich es zum letzten mal gebraucht habe. Das war allerdings noch in 4.7.. also ohne Gewähr 😉

jp_dev ·

Momentan sieht die Abfrage so aus:

<?php
namespace TYPO3\XXX\Utility;

class beUserFunc {
    function getFileFolders(&$conf, &$pObj){
        echo'<pre>';
        var_dump($conf).'<br>';
        echo'</pre>';
        echo'<pre>';
        var_dump($pObj).'<br>';
        echo'</pre>';
exit;

Die benötigte Variable ist allerdings nicht mit in der Ausgabe.