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

Функция abort_if

Функция abort_if применяется для досрочного прекращения обработки HTTP-запроса в случае, если переданное условие истинно. Первым параметром передаётся условие, вторым - HTTP-статус ответа, третьим - сообщение об ошибке, четвёртым - массив заголовков. Если условие ложно, выполнение кода продолжается.

Синтаксис

<?php abort_if($condition, $status, $message, $headers); ?>

Пример

Давайте прервём выполнение запроса, если идентификатор пользователя меньше 1:

<?php namespace AppHttpControllers; use IlluminateHttpRequest; class UserController extends Controller { public function show($id) { abort_if($id < 1, 400, 'Invalid user ID'); return "User ID: " . $id; } } ?>

Результат выполнения кода при запросе /user/1:

"User ID: 1"

Результат выполнения кода при запросе /user/0:

"HTTP 400 Bad Request"

Пример

Давайте прервём выполнение запроса с выводом кастомного сообщения, если статья не найдена:

<?php namespace AppHttpControllers; use AppModelsArticle; use IlluminateHttpRequest; class ArticleController extends Controller { public function show($id) { $article = Article::find($id); abort_if($article === null, 404, 'Article not found'); return $article->title; } } ?>

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

"Article title"

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

"HTTP 404 Not Found"

Пример

Давайте прервём выполнение запроса с дополнительными заголовками, если пользователь не является администратором:

<?php namespace AppHttpControllers; use IlluminateHttpRequest; class AdminController extends Controller { public function index(Request $request) { $isAdmin = $request->user()->role === 'admin'; abort_if( !$isAdmin, 403, 'Access denied', ['X-Reason' => 'Insufficient permissions'] ); return 'Admin panel'; } } ?>

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

"HTTP 403 Forbidden"

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

"Admin panel"

Пример

Давайте используем abort_if в маршруте для проверки параметра запроса:

<?php use IlluminateSupportFacadesRoute; Route::get('/search', function () { $query = request('q'); abort_if(empty($query), 422, 'Search query is required'); return 'Searching for: ' . $query; }); ?>

Результат выполнения кода при запросе /search?q=abc:

"Searching for: abc"

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

"HTTP 422 Unprocessable Content"

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

  • функция abort,
    которая всегда прерывает выполнение запроса
  • функция abort_unless,
    которая прерывает выполнение запроса, если условие ложно
  • функция response,
    которая создаёт HTTP-ответ
  • функция redirect,
    которая выполняет перенаправление
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить