0

我正在使用 Laravel 5.1,并且正在使用 Illuminate\Http\Request 实例来访问已发送的文件请求,但我似乎找不到访问媒体元素的正确方法。我可以访问对象中的所有其他值。

这是我正在使用的 JSON 数据格式:

{"_method":"PUT",
"topic":"1 test",
"description":"1 test",
"media_description":"1 test",
"old_parts":
  {"part-1":
    {"sub_header":"test 2",
     "text_field":"test 2 ",
     "article_id":"18",
     "media":{}},
  "part-2":
    {"sub_header":"test 3 ",
     "text_field":"test 3",
     "article_id":"18",
     "media":{}}
  },
"published":"1",
"media":{}
}

我使用两个 foreach 循环访问控制器中的媒体,一个循环用于数据库收集,另一个用于表单内容。我可以使用以下方法访问媒体元素。

if ($file = $request->file('media-' . $running_number)) {...} 

但它大大降低了可读性,因为我应该将字段 fe 命名为 media-1、media-2 ......而不是像我对其他所有内容一样使用 foreach 循环访问它们。

那么有没有办法使用 foreach 循环变量访问文件?

像这样的东西

foreach($input['old_parts'] as $old_part) { 

  if ($old_part->hasFile('media')) { ... }

}

如果我使用我键入的行,该函数将返回 FatalThrowableError :调用数组上的成员函数 hasFile()。

或者我应该只使用类似的东西

$request->file('old_parts[part-'.$x.'][media]');

要访问文件输入并使用自定义变量来计算索引?问题只是我无法弄清楚如何使用文件进入 JSON 的多个级别,因为 old_parts['..']['..'] 和 old_parts['part-1']->media don ' 似乎没有返回任何东西(返回 null)。

4

0 回答 0