Skip to content
Snippets Groups Projects
Commit 70acf102 authored by Benni Mack's avatar Benni Mack Committed by Frank Naegler
Browse files

[BUGFIX] Allow overriding of Backend Routes

Adding backend routes from Configuration/Backend/Routes.php is
done via "+=" operator which does not allow to override routes with
the same name. This is however a wanted behaviour - allowing extensions
to override core routes.

The patch changes the "+=" operator to a simple array_merge() call
to allow to change existing routes.

Resolves: #74004
Releases: master, 7.6
Change-Id: I7caf1ab5a91f849b4789ea352c20af6239470f2f
Reviewed-on: https://review.typo3.org/47005


Reviewed-by: default avatarWouter Wolters <typo3@wouterwolters.nl>
Reviewed-by: default avatarThomas Schlumberger <thomas@b13.de>
Tested-by: default avatarThomas Schlumberger <thomas@b13.de>
Reviewed-by: default avatarFrank Naegler <frank.naegler@typo3.org>
Tested-by: default avatarFrank Naegler <frank.naegler@typo3.org>
parent a9d1b7d3
Branches
Tags
No related merge requests found
...@@ -1010,8 +1010,6 @@ class Bootstrap ...@@ -1010,8 +1010,6 @@ class Bootstrap
*/ */
public function initializeBackendRouter() public function initializeBackendRouter()
{ {
$packageManager = $this->getEarlyInstance(\TYPO3\CMS\Core\Package\PackageManager::class);
// See if the Routes.php from all active packages have been built together already // See if the Routes.php from all active packages have been built together already
$cacheIdentifier = 'BackendRoutesFromPackages_' . sha1((TYPO3_version . PATH_site . 'BackendRoutesFromPackages')); $cacheIdentifier = 'BackendRoutesFromPackages_' . sha1((TYPO3_version . PATH_site . 'BackendRoutesFromPackages'));
...@@ -1023,13 +1021,14 @@ class Bootstrap ...@@ -1023,13 +1021,14 @@ class Bootstrap
$routesFromPackages = unserialize(substr($codeCache->get($cacheIdentifier), 6, -2)); $routesFromPackages = unserialize(substr($codeCache->get($cacheIdentifier), 6, -2));
} else { } else {
// Loop over all packages and check for a Configuration/Backend/Routes.php file // Loop over all packages and check for a Configuration/Backend/Routes.php file
$packageManager = $this->getEarlyInstance(\TYPO3\CMS\Core\Package\PackageManager::class);
$packages = $packageManager->getActivePackages(); $packages = $packageManager->getActivePackages();
foreach ($packages as $package) { foreach ($packages as $package) {
$routesFileNameForPackage = $package->getPackagePath() . 'Configuration/Backend/Routes.php'; $routesFileNameForPackage = $package->getPackagePath() . 'Configuration/Backend/Routes.php';
if (file_exists($routesFileNameForPackage)) { if (file_exists($routesFileNameForPackage)) {
$definedRoutesInPackage = require $routesFileNameForPackage; $definedRoutesInPackage = require $routesFileNameForPackage;
if (is_array($definedRoutesInPackage)) { if (is_array($definedRoutesInPackage)) {
$routesFromPackages += $definedRoutesInPackage; $routesFromPackages = array_merge($routesFromPackages, $definedRoutesInPackage);
} }
} }
$routesFileNameForPackage = $package->getPackagePath() . 'Configuration/Backend/AjaxRoutes.php'; $routesFileNameForPackage = $package->getPackagePath() . 'Configuration/Backend/AjaxRoutes.php';
......
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment