diff --git a/src/Illuminate/Foundation/Console/RouteListCommand.php b/src/Illuminate/Foundation/Console/RouteListCommand.php index 569469e3ce55..56bd4121f3fd 100644 --- a/src/Illuminate/Foundation/Console/RouteListCommand.php +++ b/src/Illuminate/Foundation/Console/RouteListCommand.php @@ -249,10 +249,7 @@ protected function isVendorRoute(Route $route) */ protected function isFrameworkController(Route $route) { - return in_array($route->getControllerClass(), [ - '\Illuminate\Routing\RedirectController', - '\Illuminate\Routing\ViewController', - ], true); + return $this->router->isFrameworkController((string) $route->getControllerClass()); } /** diff --git a/src/Illuminate/Routing/Router.php b/src/Illuminate/Routing/Router.php index 3665d910aa34..edcfb889bb95 100644 --- a/src/Illuminate/Routing/Router.php +++ b/src/Illuminate/Routing/Router.php @@ -258,7 +258,7 @@ public function fallback($action) */ public function redirect($uri, $destination, $status = 302) { - return $this->any($uri, '\Illuminate\Routing\RedirectController') + return $this->any($uri, RedirectController::class) ->defaults('destination', $destination) ->defaults('status', $status); } @@ -287,7 +287,7 @@ public function permanentRedirect($uri, $destination) */ public function view($uri, $view, $data = [], $status = 200, array $headers = []) { - return $this->match(['GET', 'HEAD'], $uri, '\Illuminate\Routing\ViewController') + return $this->match(['GET', 'HEAD'], $uri, ViewController::class) ->setDefaults([ 'view' => $view, 'data' => $data, @@ -627,6 +627,10 @@ protected function convertToControllerAction($action) */ protected function prependGroupNamespace($class) { + if ($this->isFrameworkController($class)) { + return '\\'.$class; + } + $group = end($this->groupStack); return isset($group['namespace']) && ! str_starts_with($class, '\\') && ! str_starts_with($class, $group['namespace']) @@ -1429,6 +1433,20 @@ public function setRoutes(RouteCollection $routes) $this->container->instance('routes', $this->routes); } + /** + * Determine if the class is a framework controller. + * + * @param string $class + * @return bool + */ + public function isFrameworkController($class) + { + return in_array($class, [ + RedirectController::class, + ViewController::class, + ], true); + } + /** * Set the compiled route collection instance. *