Как в laravel произвести валидацию массива объектов?

Имеется post запрос в контроллер, которые передает имена файлов в myfiles(generatedName,originalName) и id статьи
axios.post('/api/articlesUploads', {myfiles: this.files, article_id:this.article_id})

Вот так выглядит dd($request) из контролера5b49da3bb79be312529594.png
Пытаюсь произвести валидацию всех originalName и generatedName
$this->validate($request, [
                'article_id' => 'required',
                'myfiles.*.generatedName' => 'required|string|max:255',
                'myfiles.*.originalName' => 'required|string|max:255',
            ]);

И выдает ошибку
"message": "Trying to get property 'originalName' of non-object",

Если попытаться сделать валидацию
'myfiles.*.generatedName123' => 'required|string|max:255',

То выдает ошибку
{"message":"The given data was invalid.","errors":{"myfiles.0.123generatedName":["The myfiles.0.123generatedName field is required."],"myfiles.1.123generatedName":["The myfiles.1.123generatedName field is required."]}

Видно, что валидатор верно перебирает [0] и [1] объекты массива, следовательно по идее правильный путь валидации 'myfiles.*.generatedName'
В чем может быть проблема?
  • Вопрос задан
  • 1432 просмотра
Решения вопроса 1
Весело

Я делал так
axios.post('/api/test', {myfiles: [{generatedName:'test',originalName:''},{originalName:'test2'}], article_id:1})


В контроллере у меня

$request->validate([
            'article_id' => 'required',
            'myfiles.*.generatedName' => 'required|string|max:255',
            'myfiles.*.originalName' => 'required|string|max:255',
        ]);

Выдало нормальную ошибку
{"message":"The given data was invalid.","errors":{"myfiles.1.generatedName":["The myfiles.1.generatedName field is required."],"myfiles.0.originalName":["The myfiles.0.originalName field is required."]}}


P.S Laravel 5.6
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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