Hello.
I’ve setup an Error Middleware in middlewares.php:
$errorMiddleware = $app->addErrorMiddleware(true, true, true);
$errorMiddleware->setDefaultErrorHandler($container->get(DefaultErrorHandler::class));
with DefaultErrorHandler copied from https://github.com/odan/slim4-skeleton/blob/master/src/Handler/DefaultErrorHandler.php
And it works and return html errors.
But for some routes (api routes), I’d like to have json errors, something like:
$errorMiddleware = $app->addErrorMiddleware(true, true, true);
$errorHandler = $errorMiddleware->getDefaultErrorHandler();
$errorHandler->forceContentType('application/json);
But I do not find how to setup that in my routes:
$app->group('/api', function (Group $groupApi) {
$groupApi->get('/dogs', DogApiController::class. ':getDogs')->setName('api-dogs');
})->add(ApiErrorMiddleware::class);
I’ve tried that:
class ApiErrorMiddleware implements Middleware
{
private $logger;
private $app;
public function __construct(Logger $logger, App $app)
{
$this->logger = $logger;
$this->app = $app;
}
public function process(Request $request, RequestHandler $handler): Response
{
$this->logger->debug("...");
$errorMiddleware = $this->app->addErrorMiddleware(true, true, true);
$errorHandler = $errorMiddleware->getDefaultErrorHandler();
$errorHandler->forceContentType('application/json');
return $handler->handle($request);
}
}
But it has no effect
is there a way to replace the handler from a middleware ?