Tutorials
Einige nützliche Hilfen und Code-Schnipsel, die ich immer wieder benötige und deshalb hier für alle sammle.
Zurück zur Übersicht
TYPO3 Fluid: Verschachtelte Variablen Viewhelper
#Tutorials#TYPO3#PHP
Möchte man in Fluid eine Variable aus 2 zusammenbauen, also mit Hilfe des Keys aus einem Array den Wert bekommen, so ist dies nicht möglich.
Was man denken könnte wäre so ein Ansatz {image.{key}} oder ähnliches. Für dieses Szenario habe ich hier einen Viewhelper geschrieben, der sogar noch etwas mehr kann. Er kann als Property ein Array bekommen und somit den Key aus mehreren Variablen zusammensetzen lassen, inklusive der Angabe eines Seperatoren.
Hier der Code, der in eure Extension unter Classes/ViewHelpers zu finden sein muss. Den Namen der Klasse solltet ihr natürlich euren Bedürfnissen anpassen.
<?php
class Tx_AkTools_ViewHelpers_KeyValueViewHelper extends \TYPO3\CMS\Fluid\Core\ViewHelper\AbstractViewHelper {
/**
* @param $obj object Object
* @param $prop string Property
*/
public function initializeArguments(){
$this->registerArgument( 'obj', 'mixed', '');
$this->registerArgument( 'prop', 'mixed', '');
$this->registerArgument( 'sep', 'mixed', '');
}
public function render() {
$obj = $this->arguments['obj'];
$prop = $this->arguments['prop'];
$sep = $this->arguments['sep'];
if(is_array($prop)) $prop = implode($sep,$prop);
if(is_object($obj)) {
return $obj->$prop;
} elseif(is_array($obj)) {
if(array_key_exists($prop, $obj)) {
return $obj[$prop];
}
}
return NULL;
}
}
Und so wird der Viewhelper benutzt
{namespace ak=Tx_AkTools_ViewHelpers}
<!-- Inline-Schreibweise -->
{ak:keyValue(obj: object, prop: key)}
<!-- Inline-Schreibweise mit zusammengesetzem Key -->
{ak:keyValue(obj: object, prop: {0:key1, 1:key2}}, sep:'-' )}
Kommentare
Es gibt noch keine Kommentare. Sei der Erste!
Hinterlasse einen Kommentar