03.08.2014

TYPO3

Zugriff in Extbase auf FileReferences (FAL)

Um in Extbase auf fileReferences zuzugreifen, kann man das fileRepository anzapfen

Wenn man ein Model hat und hier mit Image-Objekten arbeitet, dann kann man bereits im Fluid-Template komplette Bilder ausgeben.

 

Wenn man aber in einer Flexform auf sys_file_references setzt, dann kommt man in Fluid nicht direkt an das Bildobjekt. Man muss sich diese Daten erst zuvor auf PHP-Ebene holen und im Template verfügbar machen.

 

Dazu findet ihr unten eine kleine Methode um die benötigten Dateien direkt aus dem fileRepository zu holen. 


Methode


protected function getFileReferences($tt_content) {
		$uid = $tt_content; // content element uid
		$fileRepository = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance('TYPO3\\CMS\\Core\\Resource\\FileRepository');
		$fileObjects = $fileRepository->findByRelation('tt_content', 'image', $uid);
		// get Imageobject information
		$files = array();
 
		//print_r($fileObjects);
 
		foreach ($fileObjects as $key => $value) {
		  $files[$key]['reference'] = $value->getReferenceProperties();
		  $files[$key]['original'] = $value->getOriginalFile()->getProperties();
		}
 
 
		return $files;
	}

Benutzung

Nach dem man über assign das Images-Array an den View übergeben hat, kann man in Fluid über {images} auf alle gefunden Bilder zugreifen.


$this->contentObj = $this->configurationManager->getContentObject();
$images=$this->getFileReferences($this->contentObj->data['uid']);
$this->view->assign('images', $images);

Fluid


<f:for each="{images}" as="image" iteration="itemIteration">
 
<f:image src="{image.reference.uid}" width="{settings.image.width}c" height="settings.image.height}c" treatIdAsReference="1" />
 
</f:for>
 
fileReferences in Extbase
Meer