TYPO3 Extensions programmieren

Extbase: URL in Controller generieren

Bei der Entwicklung von Extbase Extensions kann es durchaus passieren, dass eine URL nicht erst im Fluid Template sondern bereits im Controller generiert werden muss.

In der Regel müssen URLs erst im Template über einen Fluid ViewHelper generiert werden, in manchen Fällen (zum Beispiel wenn man bereits im Controller einen Canonical Tag ausgeben will), ist es allerdings notwendig die URL bereits im Controller zu generieren.

Damit die Hash-Parameter (oder die suchmaschinenfreundliche URL, z.B. via RealUrl) sauber generiert werden, reicht es nicht aus, die URL selber “zusammenzubauen” sondern Sie muss vom TYPO3 systemseitig generiert werden.

Hierfür stellt der AbstractController in TYPO3 die Klasse UriBuilder in der Variable uriBuilder bereit.

$uri = uriBuilder->reset()
  ->setTargetPageUid($pageUid)
  ->setCreateAbsoluteUri(true)
  ->build()

Soll die URL auf Action/Controller verlinken, so kann dies wie folgt realisiert werden:

$uri = uriBuilder->reset()
 ->setTargetPageUid($pageUid)
 ->uriFor(
 $actionName=null,
 $controllerArguments=array(),
 $controllerName=null
,
  $extensionName=null, $pluginName=null) ->setCreateAbsoluteUri(true) ->build()