PUT 请求在 Laravel 8.x 应用程序中对请求类不起作用

时间:2021-01-01 02:57:15

标签: php laravel rest laravel-8

在 Laravel 8.x 应用程序中,PUT 请求不适用于 Standard Request 类。

    save() {
        let formData = this.prepareFormInput('save');

        this.saveBeforeHook();

        axios.put(`/${this.model}/edit`, formData, this.axiosHeaders)
            .then(r => {
                if(r.data.errors) {
                    this.formDialog.errors = r.data.errors;
                } else {
                    if(r.data.record) {
                        this.saveAfterHook(r.data.record);
                    }

                    this.$root.formDialog.show = false;
                    this.$root.formMode = "add";
                }
            }).
            catch(e => {
                if(e.response.data.errors) {
                    this.formDialog.errors = e.response.data.errors;
                }
            });
    }

我已验证 PUT 请求正在发送正确的参数: enter image description here

但是请求对象没有正确设置任何发布的数据。查看请求对象,没有设置任何数据。

我已将该问题归结为 PUT 中的 Laravel 8.x 请求。

POST 中使用具有相同信息的 Laravel 8.x 请求工作正常。 enter image description here

但是 PUT 请求没有将参数设置到请求对象中: enter image description here

Laravel 5.x 应用程序中使用相同的 PUT 请求工作正常。

为什么 PUT 请求在 Laravel 8.x 中无法正常运行?

1 个答案:

答案 0 :(得分:1)

我认为这将解决您的问题 对于 PUT 你想让你的表单像

<form action="/example" method="POST">
    <input type="hidden" name="_method" value="PUT">
    <input type="hidden" name="_token" value="{{ csrf_token() }}">
</form>

<form action="/example" method="POST">
    @method('PUT')
    @csrf
</form>

更多信息:Form Method Spoofing

编辑: 如果您使用 ajax,则使用 method 作为“POST”并将 _method 值传递为“PUT”。如需更多信息:Laravel AJAX PUT & DELETE