Manchmal macht es Sinn, bereits im Controller mit FileReferences umzugehen. Zum Beispiel wenn man einen JSON String vorbereitet. Dieses Code Snippet zeigt, wie man auf die Public URL einer FileReference direkt unter Extbase zugreifen kann.

getFileReferenceUrl im Controller

Damit wir in unseren Actions nur noch eine Methode aufrufen müssen, können wir in der selben Klasse (Im Controller) diese definieren:

 

<?php

use TYPO3\CMS\Extbase\Domain\Model\FileReference;


class testController extends ... {


    ...

    public function listAction(): \Psr\Http\Message\ResponseInterface {

        $imageFileReference = $testObject->getImage();

        $fileUrl = $this->getFileReferenceUrl($imageFileReference);
        

        $this->view->assign('fileUrl', $fileUrl);

    }



    /**
     * Returns the public URL of a Extbase FileReference object.
     *
     * @param FileReference $fileReference The Extbase FileReference object.
     * @return string|null The public URL of the file or null if not found.
     */
     private function getFileReferenceUrl(FileReference $fileReference): ?string {
        // Get the File UID from the Extbase FileReference object
        $fileUid = $fileReference->getUid();

        // Get the core FileReference object
        $coreFileReference = GeneralUtility::makeInstance(
            ResourceFactory::class)->getFileReferenceObject($fileUid);

        // Get the public URL of the file
        $publicUrl = $coreFileReference->getPublicUrl();

        return $publicUrl;
    }
}

 

 

Previous PostJS Tutorial: Elemente mit dynamischer höhe prozentual verschieben
Next PostVerwaltung von CSP-Direktiven in TYPO3: Lösungen direkt über Extension