首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Laravel 5.4 - MethodNotAllowedHttpException在RouteCollection.php 233号线中的应用

Laravel 5.4 - MethodNotAllowedHttpException在RouteCollection.php 233号线中的应用
EN

Stack Overflow用户
提问于 2017-03-27 16:23:57
回答 1查看 2.4K关注 0票数 0

在我的Laravel5.4应用程序中,我有一个crud模块。对于编辑位,数据以引导模式呈现。数据被成功地拉出,但是一旦按下更新按钮,所显示的错误就会返回。

这是我的刀片表格,在模态中呈现:

代码语言:javascript
复制
<form id="formEdit" class="form-horizontal" role="form" method="put">
//form elements
</form>

下面是处理它的ajax:

代码语言:javascript
复制
//edit_id is defined globally
$('#updateClass').click(function(){
        var name = $("#formEdit #name").val();
        var status = ($('#formEdit #status').prop("checked") == true) ? 1 : 0;
        var token = $('meta[name="csrf-token"]').attr('content');
        var id = edit_id;
        var url = "classes/update/"+id;
        var formdata = {
            'name' : name,
            'status' : status,
            '_token' : token
        };

        $.ajax({
            method: "PUT",
            url: url,
            data: formdata,
            dataType: "json"
        })
        .done(function(data) {
            //
        })
        .fail(function(data) {
            //

            });
        });
    });

updateClass是在模式上显示编辑表单的按钮。

这是我在web.php的路线

代码语言:javascript
复制
Route::resource('classes', 'ClassesController');

Route::group(['prefix' => 'admin'], function () {
    Route::get('classes', 'ClassesController@index');

    Route::get('classes/edit/{id}',  'ClassesController@edit');
    Route::put('classes/update/{id}',  'ClassesController@update');
});

最后,我在类控制器中的更新函数:

代码语言:javascript
复制
public function update(Request $request, $id)
    {
        $validator = $this->validator($request->all());
        $errors = $validator->errors();
        $errors = json_decode($errors);

        if ($validator->passes()) 
        {
            Dl_class::find($id)->update($request->all());
            return response()->json();
        }
        else
        {
            return response()->json($errors, 422);
        }
    }

我错过了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-03-27 16:34:05

要从表单发送PUT请求,您需要发送一个名为method的隐藏输入元素。就像这样:

<input type='hidden' name='_method' value='PUT'>

有一个帮助方法来执行类似的操作:

{{ method_field('PUT') }}

只有这样,Laravel才能识别您的PUT请求。

或者,您也可以将此值括在ajax调用中,类似于:

代码语言:javascript
复制
var formdata = {
            'name' : name,
            'status' : status,
            '_token' : token,
            '_method' : 'PUT'
        };
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43051649

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档