diff --git a/src/Base/Middleware.php b/src/Base/Middleware.php index 91a4b07..a52dcee 100644 --- a/src/Base/Middleware.php +++ b/src/Base/Middleware.php @@ -5,6 +5,7 @@ namespace Kiri\Router\Base; use Kiri; use Kiri\Router\Validator\Validator; +use Kiri\Router\Validator\ValidatorMiddleware; class Middleware { @@ -48,21 +49,23 @@ class Middleware /** - * @param string $path - * @param array $validators + * @param string $class + * @param string $method + * @param Validator $validators */ - public static function setValidator(string $path, array $validators): void + public static function setValidator(string $class, string $method, Validator $validators): void { - self::$validators[$path] = $validators; + self::$validators[$class . '::' . $method] = $validators; } /** - * @param string $path + * @param string $class + * @param string $method * @return Validator|null */ - public static function getValidator(string $path): ?Validator + public static function getValidator(string $class, string $method): ?Validator { - return static::$validators[$path] ?? null; + return static::$validators[$class . '::' . $method] ?? null; } } diff --git a/src/Router.php b/src/Router.php index 7554efb..66fb7c8 100644 --- a/src/Router.php +++ b/src/Router.php @@ -190,10 +190,12 @@ class Router public function reset(ContainerInterface $container): void { $router = $container->get(DataGrip::class)->get(static::$type); - $middleware = $container->get(MiddlewareManager::class); foreach ($router->getMethods() as $name => $method) { - $middlewares = $middleware->get($method->getClass(), $method->getMethod()); - + $middlewares = MiddlewareManager::get($method->getClass(), $method->getMethod()); + $validator = MiddlewareManager::getValidator($method->getClass(), $method->getMethod()); + if (!is_null($validator)) { + $middlewares = array_unshift($middlewares, $validator); + } $router->setHttpHandler($name, new HttpRequestHandler($middlewares, $method)); } } diff --git a/src/Validator/BindForm.php b/src/Validator/BindForm.php index e56f77f..ff3d701 100644 --- a/src/Validator/BindForm.php +++ b/src/Validator/BindForm.php @@ -54,10 +54,7 @@ class BindForm implements InjectParameterInterface } } - $middleware = \instance(ValidatorMiddleware::class); - $middleware->validator = $validator; - - Middleware::set($class, $method, $middleware); + Middleware::setValidator($class, $method, $validator); return $validator->getFormData(); }