@alexkst

Как сделать валидацию в Laravel для динамической формы?

У меня есть массив с объектами, довольно большой JSON, в котором тип валидации каждого объекта определяется через параметр "type". Каким образом, можно все это уложить в FormRequest, если типов валидации может быть неограниченно много, а правила хранятся в БД?

Пример массива:

[
    {
        type: "link", 
        url: "https://link.com", 
      ...
    }, 
    {
        type: "image", 
        id: "drre-ggre-765", 
        image: "url"
        ...
     },
     {
         type: "arrayOfLinks", 
         links: [
             {
                  link: "www.www",
                  title: "Title"
             }
             ...
         ]
     }
     ...
]
  • Вопрос задан
  • 206 просмотров
Решения вопроса 1
alexey-m-ukolov
@alexey-m-ukolov Куратор тега Laravel
В методе rules() вы можете получить все переданные данные. По ним вы далее можете проитерировать и добавлять в массив $rules нужное правило, в зависимости от типа:
$rules = [...];

foreach ($this->get('some-field') as $index => $item) {
  switch ($item['type']) {
    case 'some-type':
      $rules["some-field.{$index}"] = [
        'some-rule',
      ]
      break;
  }
}

return $rules;
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы