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

Перехват исключения в Livewire

Давайте разберём такой случай. Кнопка на странице поста вызывает метод, который намеренно бросает исключение. Вместо ожидаемой подписи человек видит общий экран ошибки фреймворка, хотя сбой локальный и его можно обработать внутри компонента.

Метод exception вызывается, когда в компоненте всплыло необработанное исключение. Внутри можно записать своё сообщение и вызвать метод stopPropagation, чтобы ошибка не ушла дальше и страница осталась рабочей.

Страница откроется по адресу /posts/guard. Давайте создадим компонент PostGuard:

php artisan make:livewire PostGuard --class

Давайте добавим маршрут и страницу:

<?php Route::get('/posts/guard', function () { return view('posts-guard'); }); ?>
<x-layout> <livewire:post-guard /> </x-layout>

Давайте опишем метод boom и перехват в exception:

<?php namespace App\Livewire; use Livewire\Component; class PostGuard extends Component { public $note = ''; public function boom() { throw new \Exception('Boom'); } public function exception($e, $stopPropagation) { $this->note = 'Caught'; $stopPropagation(); } public function render() { return view('livewire.post-guard'); } } ?>

Давайте выведем подпись и кнопку сбоя:

<div> {{ $note }} <button type="button" wire:click="boom" > Boom </button> </div>

Создайте компонент EmployeeGuard. Сбой в методе работника не роняет страницу, а на экране видна короткая подпись.

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить