diff --git a/app/Ship/Exceptions/Handler.php b/app/Ship/Exceptions/Handler.php index 0667591..65eae5a 100755 --- a/app/Ship/Exceptions/Handler.php +++ b/app/Ship/Exceptions/Handler.php @@ -61,9 +61,7 @@ class Handler extends AbstractHandler } if (! app()->environment(['local', 'testing'])) { - return Inertia::render('Error', ['status' => $statusCode]) - ->toResponse($request) - ->setStatusCode($statusCode); + return $this->renderInertiaError($request, $statusCode); } } elseif ($statusCode === 419) { return back()->with([ @@ -74,6 +72,33 @@ class Handler extends AbstractHandler return $response; } + /** + * Render Inertia error page with Vite manifest fallback. + */ + private function renderInertiaError(Request $request, int $statusCode) + { + try { + return Inertia::render('Error', ['status' => $statusCode]) + ->toResponse($request) + ->setStatusCode($statusCode); + } catch (\Throwable $e) { + $messages = [ + 503 => 'Сервис временно недоступен. Попробуйте позже.', + 500 => 'Внутренняя ошибка сервера.', + 404 => 'Запрашиваемая страница не найдена.', + 403 => 'У вас нет доступа к этой странице.', + ]; + $message = $messages[$statusCode] ?? 'Произошла ошибка.'; + + return response( + '
' . $message . '
', + $statusCode + ); + } + } + /** * Check if the request is for a dashboard route. */ @@ -110,9 +135,18 @@ class Handler extends AbstractHandler ]); } - return Inertia::render('Dashboard/DashboardError', $props) - ->toResponse($request) - ->setStatusCode($statusCode); + try { + return Inertia::render('Dashboard/DashboardError', $props) + ->toResponse($request) + ->setStatusCode($statusCode); + } catch (\Throwable $e) { + return response( + '' . ($props['message'] ?? 'Ошибка') . '
', + $statusCode + ); + } } /**