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

Метод rules()

Метод rules в компоненте Livewire определяет правила валидации для свойств формы. Возвращает массив, где ключи - имена свойств, а значения - правила проверки. Правила задаются в виде строки с разделителями | или массивом. Этот метод автоматически вызывается при использовании $this->validate.

Синтаксис

<?php namespace AppLivewire; use LivewireComponent; class UserForm extends Component { public $name; public $email; public $age; protected function rules() { return [ 'name' => 'required|string|max:255', 'email' => 'required|email', 'age' => 'nullable|integer|min:18', ]; } public function render() { return view('livewire.user-form'); } } ?>

Пример 1 Базовое использование

Давайте создадим форму регистрации с валидацией:

<?php namespace AppLivewire; use LivewireComponent; class RegisterForm extends Component { public $username; public $password; public $email; protected function rules() { return [ 'username' => 'required|min:3|max:20', 'password' => 'required|min:6', 'email' => 'required|email|unique:users,email', ]; } public function submit() { $this->validate(); // Save user... } public function render() { return view('livewire.register-form'); } } ?>
<form wire:submit="submit"> <input type="text" wire:model="username" placeholder="Username"> @error('username') <span>{{ $message }}</span> @enderror <input type="password" wire:model="password" placeholder="Password"> @error('password') <span>{{ $message }}</span> @enderror <input type="email" wire:model="email" placeholder="Email"> @error('email') <span>{{ $message }}</span> @enderror <button type="submit">Register</button> </form>

Пример 2 Правила в виде массива

Можно использовать массив для более сложных правил:

<?php namespace AppLivewire; use LivewireComponent; use IlluminateValidationRule; class ProfileForm extends Component { public $role; public $status; protected function rules() { return [ 'role' => ['required', Rule::in(['admin', 'user'])], 'status' => ['required', 'string', Rule::notIn(['blocked'])], ]; } public function save() { $validated = $this->validate(); // Process validated data... } public function render() { return view('livewire.profile-form'); } } ?>

Пример 3 Использование withValidator

Метод rules может использоваться вместе с withValidator:

<?php namespace AppLivewire; use LivewireComponent; use IlluminateValidationValidator; class ArticleForm extends Component { public $title; public $body; public $category; protected function rules() { return [ 'title' => 'required|max:100', 'body' => 'required', 'category' => 'required|exists:categories,id', ]; } public function withValidator(Validator $validator) { $validator->after(function ($validator) { if ($this->title === $this->body) { $validator->errors()->add('body', 'Body must be different from title.'); } }); } public function publish() { $this->validate(); // Publish article... } public function render() { return view('livewire.article-form'); } } ?>

Пример 4 Использование сообщений об ошибках

Вместе с rules можно определить кастомные сообщения:

<?php namespace AppLivewire; use LivewireComponent; class ContactForm extends Component { public $name; public $message; public $rating; protected function rules() { return [ 'name' => 'required|min:2', 'message' => 'required|min:10', 'rating' => 'required|integer|between:1,5', ]; } protected function messages() { return [ 'name.required' => 'The name field is mandatory.', 'message.min' => 'Message must be at least 10 characters.', 'rating.between' => 'Rating must be between 1 and 5.', ]; } public function send() { $this->validate(); // Send message... } public function render() { return view('livewire.contact-form'); } } ?>

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

  • метод validate,
    который выполняет валидацию на основе правил
  • метод validateOnly,
    который валидирует только одно свойство
  • метод messages,
    который задаёт кастомные сообщения ошибок
  • метод addError,
    который добавляет ошибку вручную
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить