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

validationAttributes() в Livewire

Метод validationAttributes используется в компонентах Livewire для определения пользовательских имен атрибутов при валидации. Он должен возвращать массив, где ключ - имя поля, а значение - желаемое отображаемое имя. Это особенно полезно, когда вы хотите заменить технические имена полей на более понятные для пользователя формулировки в сообщениях об ошибках. Метод работает в паре с правилами валидации и сообщениями, определенными в классе компонента.

Синтаксис

<?php namespace AppLivewire; use LivewireComponent; class UserForm extends Component { public $name; public $email; public function validationAttributes() { return [ 'name' => 'User Name', 'email' => 'Email Address', ]; } public function render() { return view('livewire.user-form'); } } ?>

Метод validationAttributes должен возвращать ассоциативный массив, где ключи - это имена полей компонента, а значения - пользовательские названия.

Пример

Давайте создадим форму с полями для имени и email. При отправке формы мы будем валидировать данные, а в сообщениях об ошибках используем пользовательские имена с помощью метода validationAttributes:

<?php namespace AppLivewire; use LivewireComponent; class UserForm extends Component { public $name = ''; public $email = ''; protected function rules() { return [ 'name' => 'required|min:3|max:255', 'email' => 'required|email|max:255', ]; } public function validationAttributes() { return [ 'name' => 'Full Name', 'email' => 'Email Address', ]; } public function save() { $this->validate(); // Save user logic here... } public function render() { return view('livewire.user-form'); } } ?>
<div> <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> </div>

Если пользователь отправит форму с пустым полем name, то сообщение об ошибке будет содержать пользовательское имя "Full Name":

<div> <form> <div> <label>Name:</label> <input type="text"> <span>The Full Name field is required.</span> </div> <div> <label>Email:</label> <input type="email"> </div> <button>Save</button> </form> </div>

А если email будет в неверном формате, то сообщение будет использовать пользовательское имя "Email Address":

<div> <form> <div> <label>Name:</label> <input type="text"> </div> <div> <label>Email:</label> <input type="email"> <span>The Email Address must be a valid email address.</span> </div> <button>Save</button> </form> </div>

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

"Full Name is required. Email Address must be a valid email address."

Пример

Метод validationAttributes также работает с вложенными полями. Например, для полей формы, которые используют точечную нотацию:

<?php namespace AppLivewire; use LivewireComponent; class ProfileForm extends Component { public $user = [ 'first_name' => '', 'last_name' => '', 'contact' => [ 'phone' => '', 'address' => '', ], ]; protected function rules() { return [ 'user.first_name' => 'required|max:50', 'user.last_name' => 'required|max:50', 'user.contact.phone' => 'required|numeric', 'user.contact.address' => 'required|min:10', ]; } public function validationAttributes() { return [ 'user.first_name' => 'First Name', 'user.last_name' => 'Last Name', 'user.contact.phone' => 'Phone Number', 'user.contact.address' => 'Address', ]; } public function save() { $this->validate(); // Save profile logic... } public function render() { return view('livewire.profile-form'); } } ?>
<div> <form wire:submit="save"> <div> <label>First Name:</label> <input type="text" wire:model="user.first_name"> @error('user.first_name') <span>{{ $message }}</span> @enderror </div> <div> <label>Last Name:</label> <input type="text" wire:model="user.last_name"> @error('user.last_name') <span>{{ $message }}</span> @enderror </div> <div> <label>Phone:</label> <input type="text" wire:model="user.contact.phone"> @error('user.contact.phone') <span>{{ $message }}</span> @enderror </div> <div> <label>Address:</label> <textarea wire:model="user.contact.address"></textarea> @error('user.contact.address') <span>{{ $message }}</span> @enderror </div> <button type="submit">Save Profile</button> </form> </div>

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

"The Address field is required."

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

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