繁体   English   中英

PUT 请求不会使用 Laravel 获取 Vue.js 中记录的 ID

[英]PUT request won't get ID of the record in Vue.js with Laravel

我正在尝试在 Laravel 中使用 Vue.js 制作一个 CRUD 项目,并且在最后一步编辑中我成功了。 但我被困在其中。
我正在尝试使用相同的表单来编辑我也用于创建的表单。 一种形式,两种任务。
我得到的唯一错误是PUT http://localhost:8000/api/student/undefined 404 (Not Found) ,是的,我无法将 ID(或模型?)传递给 Axios。

我认为我的路由,Laravel 端的控制器没问题,但我无法将编辑记录的当前 ID 传递给 Axios。 另外,我没有在表单上输入任何 ID。 这可能是原因。

我要编辑的 Vue 代码

addStudent(student, id) {
                if(this.edit === false){
                    axios.post(`api/students/create`, {
                    first_name:this.first_name,
                    last_name:this.last_name,
                    student_number:this.student_number,
                    phone_number:this.phone_number,
                    email:this.email,
                    birth_date:this.birth_date,
                    school_name:this.school_name,
                    });
                } else {
                    axios.put(`api/student/`+this.id, {
                        first_name:this.first_name,
                        last_name:this.last_name,
                        student_number:this.student_number,
                        phone_number:this.phone_number,
                        email:this.email,
                        birth_date:this.birth_date,
                        school_name:this.school_name,
                    });
                }
            },

我的路线(在 api.php 中)

Route::put('student/{id}', 'StudentController@update');

我的控制器

public function update(Request $request, $id)
    {
        $student = Student::findOrFail($id);

        $student->first_name = $request->get('first_name');
        $student->last_name = $request->get('last_name');
        $student->student_number = $request->get('student_number');
        $student->phone_number = $request->get('phone_number');
        $student->first_name = $request->get('email');
        $student->email = $request->get('first_name');
        $student->birth_date = $request->get('birth_date');
        $student->school_name = $request->get('school_name');

        $student->save;

        return redirect('/');

表单操作

<form @submit.prevent="addStudent()">

我需要完成这件事,我需要任何我能得到的帮助。 谢谢

Javascript 不理解 PUT 请求,它将它作为 put 请求发送但没有主体(您只能像 get 方法结构一样使用它)。 为了解决这个问题,你需要将它作为一个带有字段_method = put的 POST 请求发送给 Laravel 以将其视为一个 put 调用

addStudent(student) {
                if(this.edit === false){
                    axios.post(`api/students/create`, {
                    first_name:this.first_name,
                    last_name:this.last_name,
                    student_number:this.student_number,
                    phone_number:this.phone_number,
                    email:this.email,
                    birth_date:this.birth_date,
                    school_name:this.school_name,
                    });
                } else {
                    axios.post(`api/student/`+this.id, {
                        _method:'PUT',
                        first_name:this.first_name,
                        last_name:this.last_name,
                        student_number:this.student_number,
                        phone_number:this.phone_number,
                        email:this.email,
                        birth_date:this.birth_date,
                        school_name:this.school_name,
                    });
                }
            },

删除thisid是本地变量

  axios.put(`api/student/`+id, {
                        first_name:this.first_name,
                        last_name:this.last_name,
                        student_number:this.student_number,
                        phone_number:this.phone_number,
                        email:this.email,
                        birth_date:this.birth_date,
                        school_name:this.school_name,
                    });

注意:由于您的 r 使用findOrFail() ,您会收到 404 错误

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM