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

Метод exception

Метод exception класса Component вызывается автоматически при возникновении исключения в любом методе компонента Livewire. Он позволяет централизованно обрабатывать ошибки, логировать их и возвращать пользователю понятные сообщения. Метод принимает параметр $e - объект исключения.

Синтаксис

<?php namespace AppLivewire; use LivewireComponent; use Exception; class UserComponent extends Component { public function exception($e) { // Handle exception } } ?>

Пример

Давайте обработаем исключение, которое возникает при делении на ноль:

<?php namespace AppLivewire; use LivewireComponent; use Exception; class Calculator extends Component { public $result = 0; public $num1 = 10; public $num2 = 0; public $error = ''; public function divide() { if ($this->num2 == 0) { throw new Exception('Division by zero is not allowed'); } $this->result = $this->num1 / $this->num2; } public function exception($e) { $this->error = 'Error: ' . $e->getMessage(); // Log error Log::error($e->getMessage()); } public function render() { return view('livewire.calculator'); } } ?>
<div> <div>{{ $num1 }} / {{ $num2 }}</div> <button wire:click="divide">Divide</button> <div>Result: {{ $result }}</div> @if($error) <div style="color: red;">{{ $error }}</div> @endif </div>

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

<div> 10 / 0 <button>Divide</button> <div>Result: 0</div> <div style="color: red;">Error: Division by zero is not allowed</div> </div>

Пример

Обработаем исключение при попытке доступа к несуществующему индексу массива:

<?php namespace AppLivewire; use LivewireComponent; use Exception; class ArrayHandler extends Component { public $items = ['a', 'b', 'c']; public $index = 5; public $value = ''; public $error = ''; public function getItem() { if (!isset($this->items[$this->index])) { throw new Exception('Index not found in array'); } $this->value = $this->items[$this->index]; } public function exception($e) { $this->error = 'Exception: ' . $e->getMessage(); $this->value = ''; } public function render() { return view('livewire.array-handler'); } } ?>
<div> Array: [a, b, c] <div>Index: {{ $index }}</div> <button wire:click="getItem">Get Item</button> <div>Value: {{ $value }}</div> @if($error) <div style="color: red;">{{ $error }}</div> @endif </div>

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

<div> Array: [a, b, c] <div>Index: 5</div> <button>Get Item</button> <div>Value: </div> <div style="color: red;">Exception: Index not found in array</div> </div>

Пример

Обработаем исключение при неверном формате данных:

<?php namespace AppLivewire; use LivewireComponent; use Exception; class UserForm extends Component { public $email = 'invalid-email'; public $status = ''; public $error = ''; public function validateEmail() { if (!filter_var($this->email, FILTER_VALIDATE_EMAIL)) { throw new Exception('Invalid email format'); } $this->status = 'Email is valid'; } public function exception($e) { $this->error = 'Validation error: ' . $e->getMessage(); $this->status = ''; } public function render() { return view('livewire.user-form'); } } ?>
<div> Email: {{ $email }} <button wire:click="validateEmail">Validate</button> <div>Status: {{ $status }}</div> @if($error) <div style="color: red;">{{ $error }}</div> @endif </div>

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

<div> Email: invalid-email <button>Validate</button> <div>Status: </div> <div style="color: red;">Validation error: Invalid email format</div> </div>

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

  • метод mount,
    который выполняется при инициализации компонента
  • метод hydrate,
    который вызывается перед восстановлением состояния компонента
  • метод dehydrate,
    который вызывается перед сохранением состояния компонента
  • метод skipRender,
    который предотвращает перерисовку компонента
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить