Увійти Реєстрація
Блог Серії
Кар'єра
Вакансії Компанії
Навчання
Документація Співбесіди Тестування Відео
Екосистема
Пакети Ресурси Проєкти Інструменти Події
Інше
Про нас Реклама

Як описати правила, що залежать від інших полів?

Є кілька рівнів - від рядкових правил до логіки в коді.

1. Готові умовні правила:

'company_name' => ['required_if:type,business'],
'vat_number'   => ['required_with:company_name'],
'doctor_name'  => ['exclude_if:has_appointment,false', 'required'],
'discount'     => ['prohibited_unless:role,manager'],

exclude_if прибирає поле і з перевірки, і з validated() - зручно, коли воно не має сенсу за іншої відповіді.

2. Умова кодом:

'role_id' => Rule::requiredIf(fn () => $this->user()->isAdmin()),
'coupon'  => Rule::when($this->boolean('has_coupon'), ['required', 'string']),

3. Перевірки на кілька полів одразу - метод after() запиту форми:

public function after(): array
{
    return [function (Validator $validator) {
        if ($this->date('ends_at') <= $this->date('starts_at')) {
            $validator->errors()->add('ends_at', 'Кінець має бути пізніше за початок.');
        }
    }];
}

Для такого простого випадку вистачить і правила after:starts_at; after() потрібен, коли логіка складніша.

Докладніше в документації: Умовне додавання правил

Перевір себе

20 випадкових питань за спробу, після завершення - розбір кожної помилки

Схожі питання