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

Метод validateOnly





Метод validateOnly класса Component в Livewire предназначен для валидации одного конкретного поля формы. В отличие от метода validate, который проверяет все поля сразу, validateOnly принимает имя поля в качестве первого аргумента, а вторым аргументом - массив правил валидации. Метод возвращает массив с ошибками валидации для указанного поля.

Синтаксис

<?php $this->validateOnly('field_name', [ 'field_name' => 'required|email|max:255' ]); ?>

Пример

Давайте создадим компонент с формой регистрации, где будем валидировать только поле email:

<?php namespace AppLivewire; use LivewireComponent; class RegisterForm extends Component { public $email = ''; public $password = ''; public $name = ''; public function validateEmail() { $this->validateOnly('email', [ 'email' => 'required|email|max:255' ]); } public function render() { return view('livewire.register-form'); } } ?>
<form> <div> <label>Name:</label> <input type="text" wire:model="name"> </div> <div> <label>Email:</label> <input type="email" wire:model="email" wire:blur="validateEmail"> @error('email') <span>{{ $message }}</span> @enderror </div> <div> <label>Password:</label> <input type="password" wire:model="password"> </div> </form>

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

<div> <label>Name:</label> <input type="text"> </div> <div> <label>Email:</label> <input type="email"> <span>The email field is required.</span> </div> <div> <label>Password:</label> <input type="password"> </div>

Пример

Давайте используем метод validateOnly внутри метода компонента для валидации поля перед сохранением:

<?php namespace AppLivewire; use LivewireComponent; class UserProfile extends Component { public $username = ''; public $age = ''; public $email = ''; public function updateProfile() { $this->validateOnly('username', [ 'username' => 'required|min:3|max:50' ]); $this->validateOnly('age', [ 'age' => 'required|integer|min:18|max:99' ]); // Save data... } public function render() { return view('livewire.user-profile'); } } ?>
<form wire:submit.prevent="updateProfile"> <div> <label>Username:</label> <input type="text" wire:model="username"> @error('username') <span>{{ $message }}</span> @enderror </div> <div> <label>Age:</label> <input type="number" wire:model="age"> @error('age') <span>{{ $message }}</span> @enderror </div> <div> <label>Email:</label> <input type="email" wire:model="email"> </div> <button type="submit">Update</button> </form>

Пример

Давайте используем метод validateOnly с собственными сообщениями об ошибках:

<?php namespace AppLivewire; use LivewireComponent; class ContactForm extends Component { public $phone = ''; public $message = ''; public function validatePhone() { $this->validateOnly('phone', [ 'phone' => 'required|regex:/^[0-9]{10}$/' ], [ 'phone.required' => 'Phone number is mandatory', 'phone.regex' => 'Phone must contain 10 digits' ]); } public function render() { return view('livewire.contact-form'); } } ?>
<form> <div> <label>Phone:</label> <input type="text" wire:model="phone" wire:keyup="validatePhone"> @error('phone') <span>{{ $message }}</span> @enderror </div> <div> <label>Message:</label> <textarea wire:model="message"></textarea> </div> </form>

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

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