Обновление проверки правильности laravel: "Обязательно", только если сохраненная запись пуста
Я подал для проверки:
public function update(request $request, Sight $sight)
{
$validator = Validator::make($request->all(), [
'img' => 'required|image|max:3000',
...
Должно быть обязательным, если только поле img в сохраненной записи является нулевым.
Является ли это возможным?
3 ответа
Это PHP, он динамический. У нас есть условные и переменные, и все такое веселье в джазе. Вы управляете строкой, которая содержит все правила, которые вы хотите использовать, и у вас есть модель там. Просто постройте свою строку.
public function update(Request $request, Sight $sight)
{
$required = $sight->img === null ? 'required|' : '';
$validator = Validator::make($request->all(), [
'img' => $required .'image|max:30
Это один из способов, не углубляясь ни в что.
В Laravel есть опция проверки, которую иногда называют:
В некоторых ситуациях вы можете захотеть выполнить проверки для поля, только если это поле присутствует в проверяемых данных. Чтобы быстро добиться этого, добавьте правило иногда в свой список правил:
$validator = Validator::make($request->all(), [
'img' => 'sometimes|required|image|max:30',
]);
В приведенном выше примере поле img будет проверяться только в том случае, если оно присутствует в $ request.
#source https://laravel.com/docs/8.x/validation#validating-when-present
Попробуй использовать required_if
правило
Пример:
// In the following example the field will be required only if the img
// parameter is empty or null
$validator = Validator::make($request->all(), [
'img' => 'image|max:3000',
'field' => 'required_if:img,',
...