Три правила відповідають на різні питання: чи має поле бути, чи може воно бути порожнім, і чи перевіряти його взагалі.
$request->validate([
'title' => ['required', 'string'], // має бути й не порожнє
'publish_at' => ['nullable', 'date'], // може бути порожнім, інакше - дата
'nickname' => ['sometimes', 'string'], // перевіряється, лише якщо поле прийшло
]);
required- поле має бути присутнім і непорожнім (неnull, не порожній рядок, не порожній масив).nullable-nullдозволений, і решта правил для нього не виконуються.sometimes- якщо ключа в запиті немає, правила поля не запускаються взагалі.
Чому nullable потрібен так часто: глобальні middleware TrimStrings і ConvertEmptyStringsToNull перетворюють порожнє поле форми на null. Без nullable правило date вважатиме null недійсною датою, хоча поле необов'язкове.
Де sometimes доречний: часткові оновлення (PATCH), коли клієнт надсилає лише змінені поля. sometimes|required означає «якщо поле прийшло, воно не може бути порожнім».
Докладніше в документації: Зауваження про необов'язкові поля