Функция abort_unless
Функция abort_unless применяется для прерывания выполнения запроса
и возврата HTTP-ошибки, если заданное условие не выполняется.
Первым параметром передаётся условие, вторым - код HTTP-статуса,
третьим - сообщение об ошибке. Если условие истинно, выполнение
продолжается, в противном случае вызывается исключение.
Синтаксис
<?php
abort_unless($condition, $statusCode, $message = '');
?>
Пример
Давайте проверим, авторизован ли пользователь, и если нет - вернём ошибку 401:
<?php
namespace AppHttpControllers;
use AppModelsUser;
class ArticleController extends Controller
{
public function show($id)
{
$user = User::find($id);
abort_unless($user, 401, 'User not authorized');
return view('profile', ['user' => $user]);
}
}
?>
Результат выполнения кода, если пользователь не найден:
HTTP/1.0 401 Unauthorized
User not authorized
Результат выполнения кода, если пользователь найден:
<!-- Отображается страница профиля пользователя -->
Пример
Давайте проверим, является ли пользователь администратором, и если нет - вернём ошибку 403:
<?php
namespace AppHttpControllers;
use AppModelsUser;
class AdminController extends Controller
{
public function dashboard()
{
$user = User::find(auth()->id());
abort_unless($user->is_admin, 403, 'Access denied');
return view('admin.dashboard');
}
}
?>
Результат выполнения кода, если пользователь не администратор:
HTTP/1.0 403 Forbidden
Access denied
Пример
Давайте проверим, существует ли статья, и если нет - вернём ошибку 404:
<?php
namespace AppHttpControllers;
use AppModelsArticle;
class ArticleController extends Controller
{
public function edit($id)
{
$article = Article::find($id);
abort_unless($article, 404, 'Article not found');
return view('article.edit', ['article' => $article]);
}
}
?>
Результат выполнения кода, если статья не найдена:
HTTP/1.0 404 Not Found
Article not found