From abd85c916df0cc0a6dc55de943a39db8b7eb4e0d Mon Sep 17 00:00:00 2001 From: Taylor Otwell Date: Fri, 26 Aug 2016 22:12:19 +0100 Subject: [PATCH] fix route list and kernel --- src/Illuminate/Foundation/Console/RouteListCommand.php | 10 +++++++--- src/Illuminate/Foundation/Http/Kernel.php | 4 ++++ src/Illuminate/Routing/Controller.php | 8 ++++---- src/Illuminate/Routing/Router.php | 2 ++ 4 files changed, 17 insertions(+), 7 deletions(-) diff --git a/src/Illuminate/Foundation/Console/RouteListCommand.php b/src/Illuminate/Foundation/Console/RouteListCommand.php index dbb8531c82b9..511d04f314d4 100644 --- a/src/Illuminate/Foundation/Console/RouteListCommand.php +++ b/src/Illuminate/Foundation/Console/RouteListCommand.php @@ -181,9 +181,13 @@ protected function getControllerMiddlewareFromInstance($controller, $method) $results = []; - foreach ($controller->getMiddleware() as $name => $options) { - if (! $method || ! $this->methodExcludedByOptions($method, $options)) { - $results[] = Arr::get($middleware, $name, $name); + foreach ($controller->getMiddleware() as $data) { + if (! is_string($data['middleware'])) { + continue; + } + + if (! $method || ! $this->methodExcludedByOptions($method, $data['options'])) { + $results[] = Arr::get($middleware, $data['middleware'], $data['middleware']); } } diff --git a/src/Illuminate/Foundation/Http/Kernel.php b/src/Illuminate/Foundation/Http/Kernel.php index 5e2346ac6459..2cccc5552c5e 100644 --- a/src/Illuminate/Foundation/Http/Kernel.php +++ b/src/Illuminate/Foundation/Http/Kernel.php @@ -164,6 +164,10 @@ public function terminate($request, $response) ); foreach ($middlewares as $middleware) { + if (! is_string($middleware)) { + continue; + } + list($name, $parameters) = $this->parseMiddleware($middleware); $instance = $this->app->make($name); diff --git a/src/Illuminate/Routing/Controller.php b/src/Illuminate/Routing/Controller.php index 87eea1db3738..f45f259d6fc5 100644 --- a/src/Illuminate/Routing/Controller.php +++ b/src/Illuminate/Routing/Controller.php @@ -17,15 +17,15 @@ abstract class Controller /** * Register middleware on the controller. * - * @param array|string|\Closure $middlewares + * @param array|string|\Closure $middleware * @param array $options * @return \Illuminate\Routing\ControllerMiddlewareOptions */ - public function middleware($middlewares, array $options = []) + public function middleware($middleware, array $options = []) { - foreach ((array) $middlewares as $middleware) { + foreach ((array) $middleware as $m) { $this->middleware[] = [ - 'middleware' => $middleware, + 'middleware' => $m, 'options' => &$options, ]; } diff --git a/src/Illuminate/Routing/Router.php b/src/Illuminate/Routing/Router.php index c41b9ac36c95..8c3ab005b5d3 100644 --- a/src/Illuminate/Routing/Router.php +++ b/src/Illuminate/Routing/Router.php @@ -676,11 +676,13 @@ public function resolveMiddlewareClassName($name) return $name; } elseif (isset($map[$name]) && $map[$name] instanceof Closure) { return $map[$name]; + // If the middleware is the name of a middleware group, we will return the array // of middlewares that belong to the group. This allows developers to group a // set of middleware under single keys that can be conveniently referenced. } elseif (isset($this->middlewareGroups[$name])) { return $this->parseMiddlewareGroup($name); + // Finally, when the middleware is simply a string mapped to a class name the // middleware name will get parsed into the full class name and parameters // which may be run using the Pipeline which accepts this string format.