---
title: "sometimes() - умовні правила валідації"
url: https://laravelukraine.com/blog/sometimes-umovni-pravila-validaciyi
author: "Олексій Бабінцев"
date: 2026-09-30
---

# sometimes() - умовні правила валідації

Email обов’язковий… але лише коли тип користувача — **customer**.

Писати кастомну логіку валідації в контролері? Неохайно.

`sometimes()` застосовує правила **лише тоді**, коли умова істинна.

**Як це працює:**

* 1-й аргумент — назва поля
* 2-й аргумент — правила
* 3-й аргумент — callback-умова

**Коли корисно:**

* Поле обов’язкове залежно від іншого поля
* Різні правила для різних типів користувачів
* Складна бізнес-логіка у валідації

Порада: складні умови виносьте в окремі методи для читабельності.

```php
$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;
});
```
