【发布时间】: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 我改变了发布的路线并且它工作了..