TYPO3 verwendet verschiedene Contexte - eben Frontend oder Backend - je nachdem, ob man sich gerade im Backend oder Frontend der TYPO3-Website befindet. Dabei weiß jeder TYPO3-Entwickler wie man im Frontend-Context eine URL generiert. Im Backend-Context sieht das Ganze etwas anders aus - es funktioniert nämlich nicht wie im Frontend-Context. Dies ist der Fall zum Beispiel im Scheduler (E-Mail Links) oder Hooks/Signals die sich auf das TYPO3-Backend beziehen.
TYPO3-Backend Link mittels URIBuilder generieren
Dabei wird die SiteConfiguration verwendet und danach die benötigten Parameter gesetzt - unter Berücksichtigung des Plugin-Namespaces.
public static function generateFrontendLinkInBackendContext($itemUid)
{
//create url
$siteConfig = SiteConfiguration::get()->getConfiguration();
$site = GeneralUtility::makeInstance(SiteFinder::class)->getSiteByPageId(
$siteConfig['vatemplate_items_detailpid']
);
$parameters = [
'tx_vatemplate_item' => [
'action' => 'show',
'controller' => 'Book',
'item' => $itemUid,
],
];
return (string)$site->getRouter()->generateUri($siteConfig['vatemplate_items_detailpid'], $parameters);
}
Im obigen Code-Snippet ist ersichtlich, dass wir zuerst die aktuelle SiteConfig laden - anschließend wird das SiteObject zur passenden Seiten-UID geladen (die Seiten-UID wiederum ist bei uns über die Site-Configuration bzw. den TYPO3 Seiteneinstellungen/Seiteneigenschaften konfigurierbar). Anschließend werden die Seiten-Parameter definiert (in diesem Fall ist der Plugin-Namespace - tx_vatemplate_item) und die URL mittels des Seitenrouters (SiteRouter) erstellt.
Das war es auch schon - mit diesem kleinen Trick ist man nun in der Lage auch im Backend-Context Links zu erstellen, welche nun ident sind, wie wenn diese im Frontend-Context mittels des URIBuilder erstellt werden.
Aus der Reihe TYPO3 Tipps und Tricks
-
Microsoft SQL Server (MSSQL) und TYPO3 in einem Docker-Container
-
Manueller/Programmatischer Login in Controller-Action (TYPO3 9)
Weitere interessante Beiträge zum Thema TYPO3 findest du hier.
Wir entwickeln digitale Lösungen mit Leidenschaft
Warum wir das tun? Weil die Verwirklichung Ihrer Vision unser größter Anspruch und die schönste Anerkennung ist. Deshalb nehmen wir uns gerne ausreichend Zeit für die Realisierung Ihres digitalen Projekts.
Kontaktieren Sie uns, wir sind gerne für Ihre Fragen da: