Ich habe in einem DB-Feld mehrer Image-Dateinamen kommagetrennt stehen also z.B. Bild1.jpg,Bild2.jpg
Das Datensatz Array von findAll() kann ich ausgeben und dort stehen sie auch drinnen.
In meinem Fluid Template mit z.B. {Datensatz.bilder} werden Sie nicht mehr ausgeben.
Woran kann das liegen, dass die Daten nicht an Fluid übergeben werden?
Wird von Extbase eine Methode bereitgestellt um kommagetrennte Bilder auszugeben?
Danke :-)
Ich habe leider keine gefunden und deshalb einen eigenen ViewHelper dafür geschrieben.. vielleicht hilft er Dir ja. Ist noch sehr simpel, aber dafür umso leichter verständlich und erweiterbar.
class Tx_Toisuperdetailed_ViewHelpers_ImagesViewHelper extends Tx_Fluid_Core_ViewHelper_AbstractViewHelper {
/**
* ViewHelper für Bildlisten
*
* @param string $images Object to iterate over1
* @param int $width Iteration variable
* @param int $limit Iteration variable
* @param int $begin Iteration variable
* @param string $options Iteration variable
*/
public function render($images, $width, $limit = false, $begin = false, $options = false) {
$path = 'uploads/tx_toisuperdetailed/';
$imgs = explode(',', $images);
if(sizeof($imgs) > 1) {
$res = '';
$count = 0;
foreach($imgs as $img) {
if(($limit && $limit <= $count) || ($begin && $begin > $count)) {
$count++;
continue;
}
switch($options) {
case 'fancybox':
$res .= '<a href="'.$path.$img.'" class="fancybox">';
$end = '</a>';
break;
case '':
$res .= '';
$end = '';
break;
}
$res .= '<img width="'.$width.'" src="'.$path.$img.'" alt="Produkt Bild" />'.$end;
$count++;
}
} else {
$res = '<img width="'.$width.'" src="'.$path.$images.'" alt="Produkt Bild" />';
}
return $res;
}
}
Im Template sieht das ganze dann so aus:
<toi:images images="{entry.images}" width="175" limit="1" begin="2" />
...würde aus der Liste jetzt bspw. nur das 3. Bild auslesen.
Der $path oben muss natürlich geändert werden 😉
Alternative dazu...
Modell
public function getPictures() {
// return $this->pictures;
return t3lib_div::trimExplode(',', $this->pictures, 1);
}
Template
1. Bild ausgeben
<f:image src="uploads/tx_ext/{obj.pictures.0}" />
Alle Bilder ausgeben
<f:for each="{obj.pictures}" as="picture">
<f:image src="uploads/tx_ext/{picture}" />
</f:for>