РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
703 of 1392 menu

Метод respond

Метод respond используется в классе Exceptions для определения пользовательского ответа при возникновении исключения. Он позволяет разработчику гибко настроить формат и содержимое ответа в зависимости от типа исключения и контекста запроса. Метод принимает замыкание, которое получает экземпляр исключения и текущий запрос, и должно возвращать объект ответа.

Синтаксис

<?php $this->respond($callback); ?>

Пример

Давайте настроим пользовательский ответ для исключения ModelNotFoundException, возвращая JSON-ответ с сообщением об ошибке:

<?php namespace AppExceptions; use IlluminateFoundationExceptionsHandler as ExceptionHandler; use IlluminateDatabaseEloquentModelNotFoundException; use Throwable; class Handler extends ExceptionHandler { public function register(): void { $this->reportable(function (Throwable $e) { // }); $this->respond(function (Throwable $e, $request) { if ($e instanceof ModelNotFoundException && $request->wantsJson()) { return response()->json([ 'message' => 'Record not found.' ], 404); } }); } } ?>

Результат выполнения кода:

{"message": "Record not found."}

Пример

Давайте настроим ответ для исключения ValidationException, возвращая ошибки валидации в формате JSON:

<?php namespace AppExceptions; use IlluminateFoundationExceptionsHandler as ExceptionHandler; use IlluminateValidationValidationException; use Throwable; class Handler extends ExceptionHandler { public function register(): void { $this->respond(function (Throwable $e, $request) { if ($e instanceof ValidationException) { return response()->json([ 'errors' => $e->errors(), 'message' => 'Validation failed.' ], 422); } }); } } ?>

Результат выполнения кода:

{"errors": {"email": ["The email field is required."]}, "message": "Validation failed."}

Пример

Давайте настроим ответ для исключения AuthenticationException, возвращая сообщение о необходимости авторизации:

<?php namespace AppExceptions; use IlluminateFoundationExceptionsHandler as ExceptionHandler; use IlluminateAuthAuthenticationException; use Throwable; class Handler extends ExceptionHandler { public function register(): void { $this->respond(function (Throwable $e, $request) { if ($e instanceof AuthenticationException) { return response()->json([ 'message' => 'Unauthenticated. Please login.' ], 401); } }); } } ?>

Результат выполнения кода:

{"message": "Unauthenticated. Please login."}

Смотрите также

  • метод reportable,
    который регистрирует пользовательские отчёты
  • метод renderable,
    который определяет пользовательский рендеринг
  • метод dontReport,
    который указывает исключения для игнорирования
  • метод shouldRenderJsonWhen,
    который определяет условие для JSON-ответа
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить