【问题标题】:how to delete user from return in controller如何从控制器中的返回中删除用户
【发布时间】:2019-11-19 14:35:47
【问题描述】:

路由不工作,我应该把@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');

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

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

【问题讨论】:

  • 错误消息说明了其中的一部分。您正在向使用Route::get() 定义的路由发送POST 请求。
  • @SalmanZafar 我使用 csrf 和方法 delete 隐藏的输入,它起作用了。
  • @newUserName02 我改变了发布的路线并且它工作了..

标签: html laravel


【解决方案1】:

将路线从 get 更改为 post。像这样

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

因为,您在表单中使用了 post 方法,但您的 route 在获取中。两者必须相同。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-31
    • 1970-01-01
    • 2020-04-11
    • 2012-05-19
    相关资源
    最近更新 更多