我正在尝试提交一个带有用户上载选项的表格。我不断收到错误消息“未定义的变量:数据”。我哪里做错了?
控制器
public function store(Request $request)
{
$this->validate($request, [
'title' => 'required|string|max:191',
'description' => 'required|string',
'date' => 'required|date|max:191',
]);
if ($request->hasfile('file')) {
foreach ($request->file('file') as $file) {
$fileName = $file->getClientOriginalName();
$file->move(public_path().'/files/', $fileName);
$data[] = $fileName;
}
}
return logbook::create([
'title' => $request['title'],
'description' => $request['description'],
'date' => $request['date'],
'file' => json_encode($data),
'student_id_FK' => session('userID'),
]);
}
答案 0 :(得分:0)
$request->file('file')
引用了file
表单数据(即单个文件上载),因此从未执行foreach
块。这就是$data
未定义的原因。
您应该使用
处理多个文件foreach ($request->allFiles() as $file) {
...
}
答案 1 :(得分:-1)
问题在于,仅在实际执行$data
行的情况下创建$data[] =
变量。看起来情况并非如此。因此,只需在添加数组之前先定义数组即可使其在没有文件的情况下正常工作。
$data = [];
// ...
$data[] = ...
此外,hasFile
method中有一个错字:
if($request->hasfile('file'))
应该是
if($request->hasFile('file'))
请注意大小写更改。