delphinpro
@delphinpro
frontend developer

Как правильно написать валидацию?

У меня есть большая форма. Данные из этой формы сохраняются в две таблицы. Часть в одну, часть в другую.
Я вижу варианты:
Один общий валидатор. Потом каждое поле раскидывать по моделям

$validator = Validator::make();
$validator1->validate();
//...
$model1->update([
  'field1_1' => $request->get('field1_1'),
  // Дофига полей
]);
$model2->create([
  'field2_1' => $request->get('field2_1'),
  // Дофига полей
])


Или написать два валидатора и сократить вторую часть.

$validator1 = Validator::make();
$validator2 = Validator::make();

$data1 = $validator1->validate();
$data2 = $validator2->validate();

$model1->update($data1);
$model2->create($data2);


Но тут утыкаюсь в проблему отлова ошибок валидации. Пишу что-то такое, но не нравится:

try {
  $data = $validator1->validate();
} catch (ValidationException $e) {
  return redirect()->back()->withErrors($validator1)->withInput();
}

try {
  $data = $validator2->validate();
} catch (ValidationException $e) {
  return redirect()->back()->withErrors($validator2)->withInput();
}


Что делать? Может как-то два валидатора объединить можно? Или вообще как-то по другому все описать? Или оставить первый вариант, пусть и несколько более многословный?
  • Вопрос задан
  • 136 просмотров
Решения вопроса 2
@jazzus
один реквест один реквест файл. в нем валидация всех полей потом уже в контроллере делаешь с ними что нужно. и Ларавел сам вернёт ошибки
Ответ написан
Комментировать
@inFureal
Можно брать нужные данные через only
$request->only(field1, field2,...);
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы