per-seo / jsonerror
JSON Error for Slim 4. This Renderer print a JSON when a 500 error occours
1.0
2025-08-01 13:06 UTC
Requires
- php: >=7.4
- psr/http-server-middleware: ^1
Requires (Dev)
- friendsofphp/php-cs-fixer: >=2
- overtrue/phplint: ^2
- php-di/php-di: >=6.4
- phpstan/phpstan: ^2.1
- phpunit/phpunit: ^11.4
- slim/psr7: ^1
- slim/slim: ^4
- squizlabs/php_codesniffer: ^3
README
A simple Renderer for Slim4 framework for JSON error Message. Usage is very simple, just add in your container settings this array:
'settings_error' => [
'reporting' => ['E_ALL', '~E_NOTICE'],
'display_error_details' => true,
'log_errors' => true,
'log_error_details' => true
]
And enable this Middleware (in the Container DI part of your Slim4 Project) with:
<?php
use Psr\Container\ContainerInterface;
use Slim\App;
use Slim\Middleware\ErrorMiddleware;
use PerSeo\ErrorRenderer\JsonError;
ErrorMiddleware::class => function (ContainerInterface $container) {
$app = $container->get(App::class);
$settings = ($container->has('settings_error') ? $container->get('settings_error') : [
'reporting' => ['E_ALL','~E_NOTICE'],
'display_error_details' => true,
'log_errors' => true,
'log_error_details' => true
]);
$errorMiddleware = new ErrorMiddleware(
$app->getCallableResolver(),
$app->getResponseFactory(),
(bool)$settings['display_error_details'],
(bool)$settings['log_errors'],
(bool)$settings['log_error_details']
);
$errorHandler = $errorMiddleware->getDefaultErrorHandler();
$errorHandler->registerErrorRenderer('application/json', JsonError::class);
$errorHandler->forceContentType('application/json');
return $errorMiddleware;
}
After this, your Slim 4 500 error page returns a JSON string with all debug informations.
Simple, isn't it?