Feature: #58621 - Unified Backend Routing¶
See Issue #58621
A new Routing component has been added to the TYPO3 Backend which handles addressing different calls / modules inside TYPO3.
A Route is the smallest entity consisting of a path (e.g. “/records/edit/”) as well as an identifier for addressing the route, and the information about how to dispatch the route to a PHP controller.
A Route can be a module, wizard or any page inside the TYPO3 Backend. The Router contains the public API for matching paths to fetch a Route and is resolved inside the RequestHandler of the Backend.
The entry point for Routes is
typo3/index.php?route=myroute&token=..... The main RequestHandler for all Backend requests
detects if a route parameter from the server is given and uses this as the route identifier and then resolves to a
controller defined inside the Route.
Routes are defined inside the file “Configuration/Backend/Routes.php” of any extension.
Example of a Configuration/Backend/Routes.php file:
return [ 'myRouteIdentifier' => [ 'path' => '/document/edit', 'controller' => Acme\MyExtension\Controller\MyExampleController::class . '::methodToCall' ] ];
The called method in the controller to be called receives a PSR-7 compliant Request object and a PSR-7 Response object, and has to return a PSR-7 Response object. The UriBuilder generates any kind of URL for the Backend, may it be a module, a typical route or an AJAX call. The UriBuilder returns a PSR-7-conform Uri object that can be casted to string when needed.
$uriBuilder = GeneralUtility::makeInstance(UriBuilder::class); $uri = $uriBuilder->buildUriFromRoute('myRouteIdentifier', array('foo' => 'bar'));
Handling of existing modules works the same as before and fully transparent. Any existing registration of entrypoints can be moved to the new registration file in Configuration/Backend/Routes.php.