我正在使用 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)。