This commit is contained in:
xl
2024-08-29 17:14:37 +08:00
parent 080cd6ab92
commit 8811f2bcd6
2 changed files with 12 additions and 2 deletions
+2 -1
View File
@@ -5,6 +5,7 @@ namespace Kiri\Router;
use Closure; use Closure;
use Kiri; use Kiri;
use Kiri\Router\Validator\ValidatorMiddleware;
use Kiri\Router\Base\Middleware as MiddlewareManager; use Kiri\Router\Base\Middleware as MiddlewareManager;
use Kiri\Router\Constrict\RequestMethod; use Kiri\Router\Constrict\RequestMethod;
use Psr\Container\ContainerInterface; use Psr\Container\ContainerInterface;
@@ -194,7 +195,7 @@ class Router
$middlewares = MiddlewareManager::get($method->getClass(), $method->getMethod()); $middlewares = MiddlewareManager::get($method->getClass(), $method->getMethod());
$validator = MiddlewareManager::getValidator($method->getClass(), $method->getMethod()); $validator = MiddlewareManager::getValidator($method->getClass(), $method->getMethod());
if (!is_null($validator)) { if (!is_null($validator)) {
$middlewares = array_unshift($middlewares, $validator); $middlewares = array_unshift($middlewares, new ValidatorMiddleware($method->getClass(), $method->getMethod()));
} }
$router->setHttpHandler($name, new HttpRequestHandler($middlewares, $method)); $router->setHttpHandler($name, new HttpRequestHandler($middlewares, $method));
} }
+10 -1
View File
@@ -16,6 +16,15 @@ class ValidatorMiddleware implements MiddlewareInterface
{ {
/**
* @param string $class
* @param string $method
*/
public function __construct(public string $class, public string $method)
{
}
/** /**
* @param ServerRequestInterface $request * @param ServerRequestInterface $request
* @param RequestHandlerInterface $handler * @param RequestHandlerInterface $handler
@@ -24,7 +33,7 @@ class ValidatorMiddleware implements MiddlewareInterface
*/ */
public function process(ServerRequestInterface $request, RequestHandlerInterface $handler): ResponseInterface public function process(ServerRequestInterface $request, RequestHandlerInterface $handler): ResponseInterface
{ {
$validator = Middleware::getValidator($request->getMethod() . '::' . $request->getUri()->getPath()); $validator = Middleware::getValidator($this->class, $this->method);
if (!$validator->run($request)) { if (!$validator->run($request)) {
return di(ResponseInterface::class)->html($validator->error(), 415); return di(ResponseInterface::class)->html($validator->error(), 415);
} else { } else {