diff options
Diffstat (limited to 'lib/private/Route/Router.php')
-rw-r--r-- | lib/private/Route/Router.php | 24 |
1 files changed, 19 insertions, 5 deletions
diff --git a/lib/private/Route/Router.php b/lib/private/Route/Router.php index 6de581ffa96..ec91e08472c 100644 --- a/lib/private/Route/Router.php +++ b/lib/private/Route/Router.php @@ -346,13 +346,27 @@ class Router implements IRouter { public function generate($name, $parameters = [], $absolute = false) { + $referenceType = UrlGenerator::ABSOLUTE_URL; + if ($absolute === false) { + $referenceType = UrlGenerator::ABSOLUTE_PATH; + } + $name = $this->fixLegacyRootName($name); + if (strpos($name, '.') !== false) { + list($appName, $other) = explode('.', $name, 3); + // OCS routes are prefixed with "ocs." + if ($appName === 'ocs') { + $appName = $other; + } + $this->loadRoutes($appName); + try { + return $this->getGenerator()->generate($name, $parameters, $referenceType); + } catch (RouteNotFoundException $e) { + } + } + + // Fallback load all routes $this->loadRoutes(); try { - $referenceType = UrlGenerator::ABSOLUTE_URL; - if ($absolute === false) { - $referenceType = UrlGenerator::ABSOLUTE_PATH; - } - $name = $this->fixLegacyRootName($name); return $this->getGenerator()->generate($name, $parameters, $referenceType); } catch (RouteNotFoundException $e) { $this->logger->logException($e, ['level' => ILogger::INFO]); |