Tips
30 вересня 2026
sometimes() - умовні правила валідації
Email обов’язковий… але лише коли тип користувача — customer.
Писати кастомну логіку валідації в контролері? Неохайно.
sometimes() застосовує правила лише тоді, коли умова істинна.
Як це працює:
- 1-й аргумент — назва поля
- 2-й аргумент — правила
- 3-й аргумент — callback-умова
Коли корисно:
- Поле обов’язкове залежно від іншого поля
- Різні правила для різних типів користувачів
- Складна бізнес-логіка у валідації
Порада: складні умови виносьте в окремі методи для читабельності.
$validator = Validator::make($request->all(), [
'name' => 'required',
'type' => 'required|in:customer,guest',
]);
$validator->sometimes(
'email',
'required|email',
fn ($input) => $input->type === 'customer'
);
$validator->sometimes(
['phone', 'address'],
'required',
fn ($input) => $input->type === 'customer'
);
// Складна умова
$validator->sometimes('company_name', 'required', function ($i) {
return $i->account_type === 'business'
&& $i->annual_revenue > 100000;
});