Обновление проверки правильности 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,',
         ...
Другие вопросы по тегам