我使用的是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)) {...}
但它会大大降低可读性,因为我应该将f.e.字段命名为media-1,media-2。。。不要像我处理其他事情那样使用foreach循环访问它们。
那么有没有办法用foreach循环变量访问文件呢?
像这样的东西
foreach($input['old_parts'] as $old_part) {
if ($old_part->hasFile('media')) { ... }
}
如果使用键入的行,函数将返回FatalThrowableError:Call to a member function hasFile()on array。
或者我应该用一些像
$request->file('old_parts[part-'.$x.'][media]');
访问文件输入并使用自定义变量计算索引?问题是,我不知道如何使用文件在JSON中进入多个级别,因为旧的部分[“…”][“…”]和旧的部分[“部分-1”]->媒体似乎不返回任何内容(返回null)。