Feature: #69916 - PSR-7-based Routing for Backend AJAX Requests

See forge#69916

Description

Support for PSR-7-based Routing for Backend AJAX requests has been added.

Impact

To add a route for an AJAX request, create the Configuration/Backend/AjaxRoutes.php of your extension:

return [
        // Does something
        'unique_route_name' => [
                'path' => '/toolcollection/some-action',
                'target' => \ACME\Controller\SomeController::class . '::myAction',
        ]
];

The unique_route_name (route identifier) parameter acts as the previously known key to call BackendUtility::getAjaxUrl() passed as parameter to the action refers to the route path, not to the route identifier itself. AJAX handlers configured in AjaxRoutes.php are not compatible with definitions in ext_localconf.php registered by ExtensionManagementUtility::registerAjaxHandler() due to different method signatures in the target actions, using PSR-7.

The route identifier is used in BackendUtility::getAjaxUrl() as $ajaxIdentifier and as key in the global TYPO3.settings.ajaxUrls JavaScript object.