如何将带有惯性的参数传递给 Laravel 控制器?
How to pass parameters with Inertia to Laravel controller?
我正在做一个小规模的项目,我们称它为 playground 以供测试。
我有一些数据:
data() {
return {
form: this.$inertia.form({
id: "",
name: "",
email: "",
files: "",
}),
};
}
表单通过提交时的函数调用处理请求:
this.form
.transform((data) => ({
...data,
name: this.sample.name,
email: this.sample.email,
files: this.sample.files,
}))
.patch(
this.route("cms.products.sample.update", {
sample: this.sample,
}),
{
forceFormData: true,
onSuccess: () => {
this.form.reset();
},
}
);
传递的示例对象是指需要更新的对象。他被正确传递,Laravel's dd($sample);正确阅读。
问题出在传递的表单数据上。数据不传递给 $request->all(),即传递给请求的属性。相反,它被传递到内容部分,并以一种非常奇怪的方式被解析,就像这样:
#content: """
------WebKitFormBoundaryvh1XjftW9MtXqoUC
Content-Disposition: form-data; name="id"
------WebKitFormBoundaryvh1XjftW9MtXqoUC
Content-Disposition: form-data; name="name"
Sample Name
在不传递自定义样本数据的情况下,表单数据被正确传递给 $request->all(),但随后发生错误,要求在更新时传递模型
Laravels 控制器看起来像这样:
public function update(UpdateSampleRequest $request, Sample $sample)
{
dd($request, $sample);
}
路线注册于web.php:
PUT|PATCH admin/products/sample/{sample}.......... cms.products.sample.update › SampleController@update
如果您没有修改路由键或键名
您可以将 this.route(
更改为 route(
并像 this.sample.id
...
一样传递 id
...
route("cms.products.sample.update", {
sample: this.sample.id,
}),
...
答案是 Laravel 不处理 PUT
文件请求。更改为 POST
并添加自定义路由处理程序后,一切正常。
我正在做一个小规模的项目,我们称它为 playground 以供测试。
我有一些数据:
data() {
return {
form: this.$inertia.form({
id: "",
name: "",
email: "",
files: "",
}),
};
}
表单通过提交时的函数调用处理请求:
this.form
.transform((data) => ({
...data,
name: this.sample.name,
email: this.sample.email,
files: this.sample.files,
}))
.patch(
this.route("cms.products.sample.update", {
sample: this.sample,
}),
{
forceFormData: true,
onSuccess: () => {
this.form.reset();
},
}
);
传递的示例对象是指需要更新的对象。他被正确传递,Laravel's dd($sample);正确阅读。
问题出在传递的表单数据上。数据不传递给 $request->all(),即传递给请求的属性。相反,它被传递到内容部分,并以一种非常奇怪的方式被解析,就像这样:
#content: """
------WebKitFormBoundaryvh1XjftW9MtXqoUC
Content-Disposition: form-data; name="id"
------WebKitFormBoundaryvh1XjftW9MtXqoUC
Content-Disposition: form-data; name="name"
Sample Name
在不传递自定义样本数据的情况下,表单数据被正确传递给 $request->all(),但随后发生错误,要求在更新时传递模型
Laravels 控制器看起来像这样:
public function update(UpdateSampleRequest $request, Sample $sample)
{
dd($request, $sample);
}
路线注册于web.php:
PUT|PATCH admin/products/sample/{sample}.......... cms.products.sample.update › SampleController@update
如果您没有修改路由键或键名
您可以将 this.route(
更改为 route(
并像 this.sample.id
...
...
route("cms.products.sample.update", {
sample: this.sample.id,
}),
...
答案是 Laravel 不处理 PUT
文件请求。更改为 POST
并添加自定义路由处理程序后,一切正常。