使用Vue Js和Laravel修补数据

时间:2019-11-17 18:49:29

标签: laravel vue.js axios

我尝试更新现有字段,但是我得到的行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);
}

2 个答案:

答案 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