Dateilinks mit dem LinkService auflösen
Manchmal kommt es vor, dass man Dateilinks (z.B. über eine FlexForm) in der Form t3://file?uid=123 bekommt.
Um diesen Link auf einfachem Weg in eine FileResource (TYPO3\CMS\Core\Resource\File) umzuwandeln, hilft die LinkService-Klasse (\TYPO3\CMS\Core\LinkHandling\LinkService).
Die Klasse LinkService ist dafür zuständig, herauszufinden, um welche Art von Ressource (Typ) es sich bei einem Link-Ziel handelt (etwa E-Mail, externe URL, Datei oder Seite). Außerdem besteht die Möglichkeit, anhand des Schemas oder Präfixes eine systemweit verständliche ‘URN’ zu erhalten, mit der der tatsächliche Ressourcentyp eindeutig identifiziert werden kann.
Wir brauchen also nur eine Instanz der Klasse zu erzeugen und den Link an den resolver zu schicken.
use TYPO3\CMS\Core\Utility\GeneralUtility; use TYPO3\CMS\Core\LinkHandling\LinkService; $filePath = 't3://file?uid=170'; $linkService = GeneralUtility::makeInstance(LinkService::class); $file = $linkService->resolve($filePath);
Der Rückgabewert ist ein Array mit zwei Elementen: der Typ des Links ($file['type'] - in meinem Fall mit dem Wert ‘file’) und die FileResource ($file['file']).
Comments
No Comments