Typo3 Backend: stdWrap in eigner Funktion nutzen
Aus LagoWiki
Um in einen Aufruf einer php-Funktion in einer eigenen Extension das "Schweizer Messer" stdWrap nutzen zu können bedarf es einiger - nicht wirklich gut dokumentierter - Kniffe. Beispielsweise ist es sinnvoll, einen Wrap um ein eigenes Feld setzen zu können, ohne dass dies im PHP-Code hardkodiert werden muss, oder ein Template genutzt und geparst werden muss.
Und so funktioniert es. Wir verwenden im Beispiel ein Typoscript, dass eine eine userFunc aufruft und apptitle als Parameter wrappen soll.
10 = USER_INT 10 { userFunc = tx_lpiphone_pi2->getXMLValue apptitle.stdWrap.dataWrap = <apptitle updated="{field:tstamp}">|</apptitle> }
Zuerst sucht man sich das entsprechende Element aus dem Konfigurationsarray.
function FUNCTIONNAME ($content, $conf) { $this->conf=$conf; ... }
nun muss es durch das cObj-Objekt "geschleust" werden und dort dann die stdWrap-Methode aufgerufen werden. Die stdWrap-Mehtode cObj-Objekt nimmt zwei Parameter entgegen: Der erste Parameter ist der Parameter/die Variable auf der der stdWrap angewendet werden soll. Der zweite Parameter ist ein array der die stdWrap Anweisungen enthält (was wir uns gleich aus dem $conf-igurations-Array bauen werden).
Den zweiten Parameter (also die Anweisungen) holen wir uns jetzt aus dem $conf array:
$arrayValueFromConfig = 'apptitle'; //das ist der Parametername aus dem Typoscript $arrayValueFromConfigPlusPoint = $arrayValueFromConfig."."; //hier fügen wir einen Punkt (".") hinzu damit wir einen Array kriegen!. $valueToWrap = "Beispielvariable"; // Wer aus dem Phpskript, der per stdWrap verarbeitet werden soll (hier ge-dataWrappt).
Diese so zusammen gebastelten Werte übergeben wir jetzt an die funktion stdWrap vom cObj-Objekt und fügen sie der Variable $content hinzu, damit sie im Frontend angezeigt wird.
$content .= $this->cObj->stdWrap($valueToWrap, $conf[arrayValueFromConfigPlusPoint]);
Hier noch ein einfacheres Beispiel, was die Verwendung noch etwas veranschaulicht:
$valueToWrap = "hallo"; $wrapAnweisungsArray = array ('case' => 'upper', 'wrap' => '<font size="10"> | </font>'); $content .= $this->cObj->stdWrap($valueToWrap,$wrapAnweisungsArray); // gibt folgendes aus: <font size="10">HALLO</font>