错误Laravel 5.6,Symfony \ Component \ HttpKernel \ Exception \ MethodNotAllowedHttpException”

时间:2018-12-19 17:09:36

标签: web laravel-5 controller routes bootstrap-modal

我已经用路由调整了控制器名称并发送了post方法的表单,但是没有用,我从模式中发送了

我已经添加了{{method_field('patch')}},但仍然无法正常工作

这是从视图来的:

<form action="{{route('edit kode', 'test')}}" method="post">
                {{ method_field('patch') }}
                {{ csrf_field() }}

                <div class="modal-header">
                    <button type="button" class="close" data-dismiss="modal" aria-label="Close">
                        <i class="material-icons">clear</i>
                    </button>
                    <h5 class="modal-title">Edit Data</h5>
                </div>
                <div class="modal-body">
                    <div class="row">
                        <div class="col-sm-12">
                            <div class="form-group">
                                <label class="bmd-label-floating">Kode</label>
                                <input type="hidden" class="form-control" id="modalidkode">
                                <input type="text" class="form-control" id="modalkode" readonly>
                            </div>
                        </div>
                        <div class="col-sm-12">
                            <div class="form-group">
                                <label class="bmd-label-floating">Nama Kode</label>
                                <input type="text" class="form-control" id="modalnamakode" required>
                            </div>
                        </div>
                    </div>
                </div>
                <div class="modal-footer">
                    <button type="button" class="btn btn-danger" data-dismiss="modal"
                            style="margin-right: 10px">Batal
                    </button>
                    <button type="submit" class="btn btn-info">Simpan Perubahan</button>
                </div>

控制器

public function editCode(Request $request){
    dd($request->all());
    $edCode="05.01";
    return redirect()->back()->withSuccess($edCode. " changed");
}

路线

Route::post('/pengaturan/edit', 'AllCodeController@editCode')->name('edit kode');

1 个答案:

答案 0 :(得分:0)

您希望该请求是您路线中的POST请求,但是您的表单正在提交PATCH请求(因为表单顶部的method_field('patch')) 。要么删除method_field()调用,要么将Route::post(...)更改为Route::patch(...)

您可以在the Laravel documentation中了解有关表单方法欺骗的更多信息:

  

HTML表单不支持PUTPATCHDELETE操作。因此,在定义从HTML表单调用的PUTPATCHDELETE路由时,您需要向表单添加一个隐藏的_method字段。通过_method字段发送的值将用作HTTP请求方法:

<form action="/foo/bar" method="POST">
    <input type="hidden" name="_method" value="PUT">
    <input type="hidden" name="_token" value="{{ csrf_token() }}">
</form>