首页 > 解决方案 > 更新数据时,RouteCollection.php 第 251 行中的 MethodNotAllowedHttpException laravel

问题描述

这个问题即将编辑我表中的数据。视图或表单已完美显示。但是当我编辑我的数据并按下更新按钮时,它显示 MethodNotAllowedHttpException 错误。我的方法错了吗?

这是视图

<form class="form-horizontal form-label-left" method="post" action="{{action('AdminController@updateruang', $id_ruang)}}">
    {{csrf_field()}}
    <div class="item form-group">
        <input name="_method" type="hidden" value="PATCH">
        <label class="control-label col-md-3 col-sm-3 col-xs-12">ID Ruangan <span class="required">*</span></label>
        <div class="col-md-6 col-sm-6 col-xs-12">
            <input type="text" class="form-control form-control-lg" id="lgFormGroupInput" placeholder="title" name="title" value="{{$ruang->id_ruang}}">
        </div>
    </div>
    <div class="item form-group">
        <label class="control-label col-md-3 col-sm-3 col-xs-12">Nama Ruangan <span class="required">*</span></label>
        <div class="col-md-6 col-sm-6 col-xs-12">
            <input type="text" class="form-control form-control-lg" id="lgFormGroupInput" placeholder="title" name="title" value="{{$ruang->nm_ruang}}">
        </div>
    </div>
    <div class="item form-group">
        <label class="control-label col-md-3 col-sm-3 col-xs-12">Keterangan <span class="required">*</span></label>
        <div class="col-md-6 col-sm-6 col-xs-12">
            <input type="text" class="form-control form-control-lg" id="lgFormGroupInput" placeholder="title" name="title" value="{{$ruang->keterangan}}">
        </div>
    </div>
    <div class="form-group row">
        <div class="col-md-2"></div>
            <button type="submit" class="btn btn-primary">Update</button>
        </div>
  </form>

这是 AdminController

public function updateruang(Request $request, $id_ruang)
{
    $ruang = Ruang::find($id_ruang);
    $ruang->nm_ruang = $request->get('nm_ruang');
    $ruang->keterangan = $request->get('keterangan');
    $ruang->save();

    return redirect('/admin/dataruang')->with('success', 'New data has been updated!!');
}

这是路线

Route::post('/editdataruang{id_ruang}','AdminController@updateruang', function(){
    $users[] = Auth::user();
    $users[] = Auth::guard()->user();
    $users[] = Auth::guard('admin')->user();

})->name('editdataruang');

标签: phplaravellaravel-5laravel-routing

解决方案


问题是这样的 - 在您的代码表单中,您有:

<input name="_method" type="hidden" value="PATCH">

但您的路线定义为

Route::post('/editdataruang{id_ruang}','AdminController@updateruang', function(){

所以要么删除行:

<input name="_method" type="hidden" value="PATCH">

从形式或变化:

Route::post('/editdataruang{id_ruang}','AdminController@updateruang', function(){

进入

Route::patch('/editdataruang{id_ruang}','AdminController@updateruang', function(){

假设您正在进行更新,您应该将路线从更改为postpatch而不是从表单中删除行。


推荐阅读