Wie man UriBuilder außerhalb vom Controller instanziert

Kategorie: Quick Tips Veröffentlicht: Mittwoch, 20. September 2017 Geschrieben von Kevin Chileong Lee
URIs in eID Klassen generieren

In Extbase 8.7.x erstellt man URIs innerhalb einer Extension im ControllerContext ganz einfach über den UriBuilder. Befindet man sich allerdings außerhalb eines ControllerContext, z.B. in einer eID - Klasse, dann steht die Klassenvariable: $this->controllerContext nicht zur Verfügung.

Was nun?

Dann muss man das Frontend Rendering simulieren, um daraus einen UriBuilder instanzieren zu können. Das geht wie folgt:

$objectManager = GeneralUtility::makeInstance(ObjectManager::class);
$configurationManager = $objectManager->get(ConfigurationManager::class);
$contentObjectRenderer = $objectManager->get(ContentObjectRenderer::class);
$configurationManager->setContentObject($contentObjectRenderer);
$uriBuilder = $objectManager->get(UriBuilder::class);
$uriBuilder->injectConfigurationManager($configurationManager);

Sehr wichtig ist die Erstellung und Zuweisung des ContentObjectRenderer in Zeile 3 und 4. Dieser stellt erst stellt den Configuration Manager in ein frontendähnlichen Kontext, der benötigt wird in Typo3 V8.7.x eine URI zu generieren.

Wenn du Probleme oder noch Fragen zu diesem Thema hast, dann schreibe mir auf meine Facebook Seite oder schicke mir eine Nachricht über das Kontaktformular.

Hau rein! 

News on Slavlee

Wenn du dich auf dem laufenden über alle Produkte, Tutorials und Quicktips halten möchtest. Dann trage dich jetzt kostenfrei im Newsletter ein. Ich werde dich nicht mit täglichen Newsletter zumüllen. Versprochen!