Laravel 5.5 MethodNot允许使用PUT方法进行更新

时间:2017-09-12 18:48:08

标签: rest laravel-routing php-7.1 laravel-5.5

我在Laravel 5.5中更新数据时遇到问题。当我尝试更新资源控制器的记录时,我收到MethodNotAllowedException,但我使用的是PUT方法。以下是详细信息:

路线:

Route::middleware(['auth'])->group(function(){
    Route::get('/', 'DashboardController@index')->name('home')

    Route::resource('stages', 'StagesController');

});

形式: enter image description here

Ajax方法:

$('#ajax_form_modal').on('submit', 'form', function (event) {
    event.preventDefault();
    var $modal = $('#ajax_form_modal');
    var $modal_dialog = $modal.find('.modal-dialog');
    var $form = $(this);
    var method = 'post';

    if ($form.find('[name="_method"]')) {
        method = $form.find('[name="_method"]').val(); //this fires
    } else if ($form.has('method')) {
        method = $form.attr('method');
    }

    //method = 'PUT'

    $.ajax({
        url: $(this).attr('href'),
        dataType: 'json',
        type: method,
        data: $(this).serialize(),

响应:

"trace": [
    {
        "file": "\\vendor\\laravel\\framework\\src\\Illuminate\\Routing\\RouteCollection.php",
        "line": 238,
        "function": "methodNotAllowed",
        "class": "Illuminate\\Routing\\RouteCollection",
        "type": "->",
        "args": [
            [
                "GET",
                "HEAD",
                "POST"
            ]
        ]
    },

路线:表: enter image description here

我不知道,为什么更新方法只允许'GET','HEAD','POST',我试图使用Post方法手动处理更新并且它工作,也尝试调试路由不匹配发生但没有运气的地方。任何人都可以建议吗?我真的不想破坏我的控制器的RESTFUL。

1 个答案:

答案 0 :(得分:0)

我发现了这个错误:href应该是动作,需要更多的睡眠......

$.ajax({
    url: $(this).attr('href'),
    dataType: 'json',
    type: method,
    data: $(this).serialize(),