Функция abort в Laravel
Иногда findOrFail не подходит:
запись вы уже получили через find
или проверили своё условие, и только
потом решили отдать ошибку. В таких
случаях вызывают функцию abort.
Она сразу прерывает выполнение
и отдаёт указанный HTTP-статус.
Чаще всего передают 404:
<?php
namespace App\Http\Controllers;
use App\Models\Post;
class PostController extends Controller
{
public function show($id)
{
$post = Post::find($id);
if (!$post) {
abort(404);
}
return view('post.show', ['post' => $post]);
}
}
?>
Первый параметр - код статуса. Вторым можно передать текст сообщения, если нужно:
<?php
namespace App\Http\Controllers;
class PostController extends Controller
{
public function show($id)
{
abort(404, 'Post not found');
}
}
?>
Так же можно отдавать и другие коды -
например 403, когда доступ
запрещён. Для «записи нет» обычно
хватает 404.
Сделайте маршрут, который показывает
пользователя по его id.
Получите пользователя через
User::find и при отсутствии
вызовите abort(404).
Вызовите abort со статусом
403 и своим текстом сообщения.