У меня есть форма в Laravel, и я работаю с отправкой и проверкой, но я делаю пользовательскую проверку для проверки данных в базе данных (для очистки).
Проблема в том, что я хочу выполнить эту проверку, только если каждое из полей заполнено. Другими словами, если ввод не требуется и, следовательно, не заполняется, я не хочу, чтобы он потерпел неудачу из-за несоответствия данных в базе данных.
Например, у меня есть форма ввода на моем блейде:
<td>{!! Form::select('productNumber', $img->productNumber) !!}</td>
и в контроллере я проверяю это в отношении службы, чтобы убедиться, что это действительные данные
if(!$productCheckService->validGroupCode($request->productNumber))
return back()->withErrors("Invalid group: ".$request->productNumber);
Это работает, если заполнено, но если поле пустое, я хочу обойти эту проверку. Другими словами, поле не является обязательным, поэтому проверка допустимости данных не должна требоваться для пустого / пустого поля.
Я делаю это ниже, но он все еще не работает, если он по какой-то причине пуст. Я что-то пропустил? Я думаю, что проверки того, что она не пуста до проверки, должно быть достаточно.
if(!empty($request->productNumber))
if(!$productCheckService->validGroupCode($request->productNumber))
return back()->withErrors("Invalid group: ".$request->productNumber);
Вы можете использовать атрибуты Laravel ‘иногда’, поэтому, если ваше поле отсутствует в массиве запросов, оно будет обходиться без проверки.
$v = Validator::make($data, [
'productNumber' => 'sometimes|required|number',
]);
Других решений пока нет …