public function routeMiddleware(ServerRequestInterface $request, ResponseInterface $response, callable $next)
{
$result = $this->router->match($request);
if ($result->isFailure()) {
if ($result->isMethodFailure()) {
$response = $response->withStatus(405)->withHeader('Allow', implode(',', $result->getAllowedMethods()));
return $next($request, $response, 405);
}
return $next($request, $response);
}
// Inject the actual route result, as well as individual matched parameters.
$request = $request->withAttribute(Router\RouteResult::class, $result);
foreach ($result->getMatchedParams() as $param => $value) {
$request = $request->withAttribute($param, $value);
}
return $next($request, $response);
}