我尝试更新现有字段,但是我得到的行ID未定义。 我尝试通过几种方式来执行此操作,但到目前为止没有任何结果。 如果我对ID进行硬编码(例如example.dev/customers/5),则会收到错误500。
需要帮助吗?
<b-table show-empty :items="items.data" :fields="fields">
<template v-slot:cell(actions)="row">
<b-button v-b-modal.modal-prevent-closing-update> Edit </b-button>
</template>
</b-table>
<b-modal
id="modal-prevent-closing-update"
ref="modal"
@ok="updateName(items.data.id)"
>
<form ref="form" @submit.stop.prevent>
<b-form-group label=" Name" label-for="name-input">
<b-form-input id="name-input" v-model="name"></b-form-input>
</b-form-group>
</form>
</b-modal>
export default {
data() {
return {
items: [],
name: ''
}
}
updateName() {
axios
.post("/customers/" + this.items.id, {
name: this.name,
_method: "patch"
})
.then(response => {
console.log(response);
})
.catch(e => {
console.log(e);
});
},
}
Laravel路由和控制器
Route::patch('/customers/{customer}', 'CustomersController@update');
public function update(Request $request, $id)
{
$data = $request->validate([
'name' => 'required|string',
]);
$customer->update($data);
return response($customer,200);
}
答案 0 :(得分:0)
由于您已经在方法中传递了ID,为什么不使用该ID:
www.site.it/newfolder/sub1/detail/page2.html
因为据我所知,您的www.site.it/folder1/fodler2/sub1/detail/page3.html
是一个数组,在上面添加了对象www.site.it/newfolder/sub1/detail/page3.html
,所以可能需要使用键updateName(id) {
axios.post("/customers/" + id, {
name: this.name,
_method: "patch"
})
.then(response => {
console.log(response);
})
.catch(e => {
console.log(e);
});
},
来访问它,或者像这样的东西。
或者仅使用items
并检查items.data
在axios请求之前返回什么。
答案 1 :(得分:0)
您从未在控制器的操作中定义$customer
变量。
您可以通过以下方式更新控制器方法的签名来利用Laravel的路由模型绑定:
public function update(Request $request, $id)
收件人:
public function update(Request $request, Customer $customer)
用模型类替换Customer
。
您可以在此处阅读有关路由模型绑定的更多信息:https://laravel.com/docs/5.8/routing#route-model-binding