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! 

Cookies erleichtern die Bereitstellung unserer Dienste. Mit der Nutzung unserer Dienste erklären Sie sich damit einverstanden, dass wir Cookies verwenden.
Weitere Informationen Ok Ablehnen