`after()` - хук валідації після проходження всіх правил
Треба перевірити комбінацію полів? Або пов’язані записи в БД?
Звичайні правила працюють незалежно. Хук after() запускається після того, як усі правила пройшли.
Коли корисно:
- Валідація кількох полів разом
- Перевірки в БД
- Складна бізнес-логіка
- Кастомні повідомлення помилок на основі кількох полів
Суть:
Callback отримує Validator. Помилки додаються вручну.
Порада: after() ідеальний для валідації, що залежить від кількох полів або запитів до БД.
public function withValidator($validator)
{
$validator->after(function ($v) {
if ($this->start_date > $this->end_date) {
$v->errors()->add(
'end_date',
'Дата завершення має бути після початку.'
);
}
$total = $this->quantity * $this->price;
if ($total > 1000 && ! $this->has_approval) {
$v->errors()->add(
'has_approval',
'Замовлення понад $1000 потребують підтвердження.'
);
}
});
}