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

Атрибут #[Validate]

Атрибут #[Validate] в Livewire позволяет задать правила валидации прямо над свойством компонента. Это альтернатива использованию метода rules, которая делает код более компактным и наглядным, так как правила находятся непосредственно рядом с объявлением свойства. В качестве значения атрибуту передаются правила валидации Laravel.

Синтаксис

<?php namespace AppLivewire; use LivewireComponent; use LivewireAttributesValidate; class UserForm extends Component { #[Validate('required|string|max:255')] public $name; #[Validate('required|email')] public $email; public function render() { return view('livewire.user-form'); } } ?>

Пример

Давайте создадим форму, в которой проверим имя и email с помощью атрибута #[Validate]:

<?php namespace AppLivewire; use LivewireComponent; use LivewireAttributesValidate; class UserForm extends Component { #[Validate('required|string|min:2|max:50')] public $name = ''; #[Validate('required|email')] public $email = ''; public function save() { $this->validate(); // Saving logic... } public function render() { return view('livewire.user-form'); } } ?>
<form wire:submit="save"> <div> <label>Name:</label> <input type="text" wire:model="name"> @error('name') <span>{{ $message }}</span> @enderror </div> <div> <label>Email:</label> <input type="email" wire:model="email"> @error('email') <span>{{ $message }}</span> @enderror </div> <button type="submit">Save</button> </form>

Пример

При использовании атрибута #[Validate] можно задавать собственные сообщения об ошибках:

<?php namespace AppLivewire; use LivewireComponent; use LivewireAttributesValidate; class UserForm extends Component { #[Validate( rule: 'required|string|min:2', message: 'The name must be at least 2 characters.' )] public $name = ''; #[Validate( rule: 'required|email', message: 'Please enter a valid email address.' )] public $email = ''; public function save() { $this->validate(); // Saving logic... } public function render() { return view('livewire.user-form'); } } ?>

Пример

Можно использовать атрибут #[Validate] с динамическими правилами, например, для проверки массива:

<?php namespace AppLivewire; use LivewireComponent; use LivewireAttributesValidate; class UserForm extends Component { #[Validate('required|array|min:1')] public $tags = []; #[Validate('required|string')] public $title = ''; public function save() { $this->validate(); // Saving logic... } public function render() { return view('livewire.user-form'); } } ?>
<form wire:submit="save"> <div> <label>Title:</label> <input type="text" wire:model="title"> @error('title') <span>{{ $message }}</span> @enderror </div> <div> <label>Tags:</label> <input type="text" wire:model="tags.0"> <input type="text" wire:model="tags.1"> @error('tags') <span>{{ $message }}</span> @enderror </div> <button type="submit">Save</button> </form>

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

  • атрибут #[Rule],
    который позволяет применять более сложные правила валидации
  • атрибут #[Url],
    который синхронизирует свойство с параметром URL
  • атрибут #[Session],
    который сохраняет свойство в сессии
  • атрибут #[Locked],
    который защищает свойство от изменений на клиенте
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить