Vue / Laravel-Formdata.append在编辑时显示空值

时间:2020-05-13 08:58:21

标签: laravel vue.js

我有一个有效的post方法,用于存储照片和用户的名字。

 // front-end
 let formData = new FormData();
 formData.append('photo', this.tableItem.photo);
 formData.append('first_name', this.tableItem.first_name);
 await axios.post('/api/employees', formData, { headers: { 'Content-Type': 'multipart/form-data' }})

 // back-end
 $employee = Employee::create([
  'first_name' => $request->first_name,
 ]);

现在,如果我编辑first_name,则put方法是成功的,但是该值显示为空白

  Object.assign(this.tableData[this.editedIndex], this.tableItem)
  let formData = new FormData();
  formData.append('photo', this.tableItem.photo);
  formData.append('first_name', this.tableItem.first_name);
  await axios.put('/api/employees/' + this.tableItem.id, formData, { headers: { 'Content-Type': 'multipart/form-data' }})

  $employee->update([
    'first_name' => $request->first_name,
  ]);

如果我删除了formData并将其替换为this.tableItem,则一切正常。即使我为await放置了Object.assign,仍然无法捕获新值输入。

1 个答案:

答案 0 :(得分:1)

它也是known bug on PHPSymfony和Laravel,一种解决方法是将_methodPATCH值的PUT参数附加到您的{{ 1}},而改用formdata

axios.post

在Laravel存储库上查看此问题以获取更多信息:https://github.com/laravel/framework/issues/13457#issuecomment-340156084