如何从控制器返回中删除用户

时间:2019-07-10 02:36:26

标签: html laravel

路由不起作用,应该将@csrf@method('DELETE')放在哪里?因为它不会删除用户。在问题发生之前,@csrf@method('DELETE')处于刀片视图中。但是,当我将@csrf@method('DELETE')分别返回时,会显示错误。

$employees = DB::table('users')->leftjoin('roles', 'users.role_id', '=', 'roles.id')->leftjoin('supervisors', 'users.manager_id', '=', 'supervisors.id')
                ->select(['users.id','users.name','users.department','users.email','users.leaves_available','roles.name_role','supervisors.name_supervisor']);
                return Datatables::of($employees)
        ->addColumn('action', function ($employees) {

            return '<form action="'.route('employee.destroy', $employees->id).'" method="post">
                                <button type:"submit" class="btn btn-sm btn-danger">Delete</button>
                            </form>
                        </div>
                    </div>
                </div>
            </div>';
        })->make(true);

以我使用route('employee.destroy',$ employee-> id)的形式,则参数将为http://localhost:8000/employee/1,我希望用户被删除。

EmployeeController.php

public function destroy($id)
    {
        DB::table('users')->delete($id); 
        return redirect()->route('home')
                        ->with('success','Employee have been deleted');
    }

这是我的web.php

Route::get('employee/{id}', 'EmployeeController@destroy');

我希望destroy函数将运行并重定向回首页。但是我得到的是:

  

此路由不支持POST方法。支持的方法:   GET,HEAD,PUT,PATCH,DELETE。

1 个答案:

答案 0 :(得分:0)

将路线从获取更改为发布。像这样

Route::post('employee/{id}', 'EmployeeController@destroy');

因为,您在表单中使用post方法,但是route可以使用。两者必须相同。