Laravel, используя условие поля выбора, чтобы диктовать валидацию формы - PullRequest
0 голосов
/ 08 ноября 2018

У меня недавно добавлено поле выбора в моей форме обновления laravel:

<tr>
  <td>{!! Form::label('statusCode', 'Active') !!}</td>
  <td>{!! Form::select('statusCode', array('A' => 'Yes', 'D' => 'No')) !!}</td>
</tr>

Установка его на Да или Нет работает, и когда я отправляю форму, она корректно обновляет запись базы данных, но возникает небольшая головная боль при проверке.

Технически, если я устанавливаю «Нет» для деактивации изображения, тогда все, что мне нужно, - это идентификатор изображения, поэтому я знаю, какой из них деактивировать, но сейчас это вызывает проверку на ненужных входах, если они пустые.

Таким образом, в этом блоке, если мой выбор установлен на «D» или «Нет», мне нужно только указать идентификатор:

$this->validate($request, [
        'id' => 'required|numeric|unique:jfi.image_files,id,' . $id,
        'prdGrpNum' => 'numeric|required',
        'altGrpDesc' => 'required',
        'cover1' => 'numeric|required', 
        'color1' => 'numeric|required', 
        'typeId' => 'numeric|required'
    ]);

Однако, в следующем блоке я проверяю все заполненные входные данные в базе данных, чтобы сохранить данные в санированном состоянии.

Таким образом, для этого блока я хочу сказать: «Если поле выбора установлено на« D »/« Нет », И это поле пустое, не проверять. Иначе, сделайте эту существующую проверку для imageService»

 if(!$imageService->validImageTypeId($request->typeId))
        return back()->withErrors("Invalid image type given");

Как я могу использовать значение поля выбора, чтобы пустые поля могли пропускать проверку, но заполненные поля все еще подлежали проверке?

1 Ответ

0 голосов
/ 08 ноября 2018

Вы можете использовать required_if правило: required_if:anotherfield,value,...

'prdGrpNum' => 'required_if:statusCode,Yes|numeric'

и то же самое для других правил.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...