Laravel Livewire v3 представив атрибут #[Validate], який революціонізує підходи до валідації форм у компонентах. Ця потужна можливість дозволяє заявляти правила валідації безпосередньо на властивостях компонента, що робить код більш зрозумілим та легким для підтримки.
Атрибут #[Validate] усуває необхідність у традиційних масивах $rules, об'єднуючи логіку валідації з деклараціями властивостей. Це забезпечує миттєву ясність щодо умов валідації для кожного поля.
use Livewire\Component;
use Livewire\Attributes\Validate;
class UserForm extends Component
{
#[Validate('required|string|min:2')]
public $username = '';
#[Validate('required|email|unique:users,email')]
public $email = '';
public function submit()
{
$this->validate();
User::create([
'username' => $this->username,
'email' => $this->email,
]);
}
public function render()
{
return view('livewire.user-form');
}
}
Атрибут підтримує різні конфігурації, включаючи кастомні повідомлення про помилки, іменування атрибутів та умовні сценарії валідації. Ви можете налаштувати повідомлення про валідацію безпосередньо в декларації атрибута:
#[Validate('required|min:2', message: 'Ім'я користувача повинно містити щонайменше 2 символи')]
public $username = '';
Для складніших вимог до валідації синтаксис масиву надає додаткову гнучкість:
#[Validate([
'tags' => 'required|array',
'tags.*' => 'string|max:50'
], message: [
'tags.required' => 'Будь ласка, додайте хоча б один тег',
'tags.*.max' => 'Кожен тег повинен містити не більше 50 символів'
])]
public $tags = [];
Розгляньте розробку системи реєстрації на події, де застосовуються різні правила валідації залежно від типу події. Атрибут #[Validate] спрощує цей складний сценарій, зберігаючи логіку валідації поряд з відповідними властивостями.
class EventRegistration extends Component
{
#[Validate('required|string')]
public $participant_name = '';
#[Validate('required|email')]
public $participant_email = '';
#[Validate('required|in:workshop,seminar,conference')]
public $event_type = '';
#[Validate('nullable|required_if:event_type,conference|string')]
public $dietary_requirements = '';
#[Validate('boolean')]
public $newsletter_consent = false;
public function register()
{
$validated = $this->validate();
EventParticipant::create([
'name' => $validated['participant_name'],
'email' => $validated['participant_email'],
'event_type' => $validated['event_type'],
'dietary_requirements' => $validated['dietary_requirements'],
'newsletter_consent' => $validated['newsletter_consent'],
]);
$this->dispatch('registration-complete', name: $validated['participant_name']);
return $this->redirect('/events/confirmation');
}
public function render()
{
return view('livewire.event-registration');
}
}
Цей компонент реєстрації демонструє, як #[Validate] обробляє різні сценарії валідації, включаючи умовні вимоги та логічні поля. Поле dietary_requirements стає обов'язковим лише тоді, коли тип події - 'conference', що підкреслює гнучкість атрибута для динамічних правил валідації.
Атрибут #[Validate] працює ефективно в процесі виконання, зберігаючи продуктивність і покращуючи читабельність коду. Для додатків, які вимагають складної логіки валідації або кастомних правил, традиційні методи валідації залишаються доступними як доповнюючі підходи.
Ви готові відкрити нові горизонти у роботі з геопросторовими даними в Laravel? Дізнайтеся, як за допомогою PostGIS та пакету Laravel-Magellan можна легко зберігати, запитувати та маніпулювати інформацією про розташування, перетворюючи ваші проекти на вражаючі рішення у сфері картографії та геолокації!
Вам цікаво дізнатися, як спростити інтеграцію RabbitMQ у вашому Laravel-додатку? У нашій статті ми розглянемо пакет Simple RabbitMQ, який дозволяє легко налаштувати багатозʼєднання, публікувати повідомлення та обробляти черги за допомогою простого синтаксису. Читайте далі, щоб дізнатися більше!
Досліджуйте новий пакет Data Model для PHP, який спрощує процес гідратації об'єктів без зайвих складнощів! Дізнайтеся, як впровадження типобезпечних об'єктів може революціонізувати ваш підхід до розробки, читаючи нашу статтю