Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Laravel Axios put error 500表示字段不能为空_Laravel_Vue.js - Fatal编程技术网

Laravel Axios put error 500表示字段不能为空

Laravel Axios put error 500表示字段不能为空,laravel,vue.js,Laravel,Vue.js,因此,我试图从管理面板更新用户,通过v模型从表单中获取值,然后使用FormData()中的所有数据执行axios.put。问题是,我得到一个错误500,表示x字段不能为空,所以我猜我的FormData()没有传递给控制器。 我尝试了post方法,效果很好。所以我想知道我做错了什么? 以下是Vuejs代码: <script> export default { data () { return { search: '', headers

因此,我试图从管理面板更新用户,通过v模型从表单中获取值,然后使用FormData()中的所有数据执行axios.put。问题是,我得到一个错误500,表示x字段不能为空,所以我猜我的FormData()没有传递给控制器。 我尝试了post方法,效果很好。所以我想知道我做错了什么? 以下是Vuejs代码:

<script>
export default {
    data () {
      return {
        search: '',
        headers: [
          { text: 'ID', align: 'start', value: 'id'},
          { text: 'Name', value: 'name' },
          { text: 'Profile', value: 'profile' },
          { text: 'Email', value: 'email' },
          { text: 'Created At', value: 'created_at' },
          { text: 'Actions', value: 'actions' },
        ],
        users: null,
        editedUser: null,
        dialog: false,
      }
    },
    methods: {
        getUsers(){
            axios.get('../admin/getUsers')
        .then(response => this.users = response.data)
        },
        editUser(item){
          this.editedUser = item;
          this.dialog = true;
        },
        submitEditedUser(){
        let data = new FormData();

        data.append('id', this.editedUser.id)
        data.append('name', this.editedUser.name)
        data.append('profile', this.editedUser.profile)
        data.append('email', this.editedUser.email)

          axios.put('../admin/updateUser/' + this.editedUser.id, data)
          .then(res => {
          console.log('done');
          })
          .catch(err => {
          console.log('changes failed');
          })
        }
    },
    mounted(){
        this.getUsers();
    }

  }
</script>
post的所有功能都很好,所以变量或表单没有问题,我认为实际上只是数据没有被传递。虽然我想使用put方法,因为它最初用于更新数据。
谢谢

你能试试这个吗?如果这不起作用,您可以在控制器内添加(请求),并查看是否为空

public function updateUser($id, Request $request)
{

    $user = User::find($id);

    $user->name = $request->data['name'];
    $user->profile = $request->data['profile'];
    $user->email = $request->data['email'];

    $user->save();
}

难道你不能为传递给axios.put(…)的
数据
属性使用一个原始javascript对象吗?FormData通常只在混合使用二进制数据和文本数据时才需要。我尝试了这个方法,但仍然遇到了相同的问题,因此我添加了(请求),并且可以使用正确的信息查看FormData。
public function updateUser($id, Request $request)
{

    $user = User::find($id);

    $user->name = $request->data['name'];
    $user->profile = $request->data['profile'];
    $user->email = $request->data['email'];

    $user->save();
}