Files
kupshop/bundles/KupShop/KupShopBundle/Controller/ExceptionController.php
2025-08-02 16:30:27 +02:00

44 lines
1.6 KiB
PHP

<?php
namespace KupShop\KupShopBundle\Controller;
use KupShop\ContentBundle\View\Error500View;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\DependencyInjection\Attribute\Autowire;
use Symfony\Component\ErrorHandler\ErrorRenderer\HtmlErrorRenderer;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\RequestStack;
use Symfony\Component\HttpFoundation\Response;
class ExceptionController extends AbstractController
{
public function __construct(
#[Autowire(service: 'error_handler.error_renderer.html')] protected HtmlErrorRenderer $symfonyErrorRenderer,
) {
}
public function showException(Request $request, RequestStack $requestStack, Error500View $view): Response
{
$originalException = $request->attributes->get('exception');
$sentry_event_id = $requestStack->getMainRequest()->attributes->get('sentry_event_id');
if (isSuperuser() || php_sapi_name() == 'cli' || !isProduction()) {
$error = "{$originalException->getTraceAsString()}
{$originalException->getFile()}:{$originalException->getLine()} - {$originalException->getMessage()}";
return new Response($error, 500);
}
if (!$sentry_event_id) {
$renderedException = $this->symfonyErrorRenderer->render($originalException);
return new Response($renderedException->getAsString(), $renderedException->getStatusCode(), $renderedException->getHeaders());
}
$view->setException($originalException)
->setSentryEventId($sentry_event_id);
return $view->getResponse($request);
}
}