我无法在Laravel中解决“方法不允许例外”

时间:2019-07-16 20:20:49

标签: laravel routing

不允许的方法异常如下所示,此路由不支持POST方法。支持的方法:GET,HEAD,PUT,PATCH,DELETE。

<div class="container">
    <div class="row justify-content-center">
        <div class="col-md-12">
            <div class="card">
                <div class="card-header card-header-success">
                    <h4>Account Registration Form</h4>
                </div>
                    <form method="POST" action="{{ route('accounts.store')}}" enctype="multipart/form-data" id="commentForm">
                        @csrf
                        <!-- Codes -->
                    </form>
                </div>
            </div>
        </div>
    </div>
</div>
```

```Route::get('/', function () {
    return view('home');
});

Route::resource("accounts", "AccountController");
Route::get('/accounts', 'AccountController@create');
Route::post('/accounts', 'AccountController@create');
```

3 个答案:

答案 0 :(得分:1)

在routes / web.php中仅定义一次路由。

删除以下几行:

Route::get('/accounts', 'AccountController@create');
Route::post('/accounts', 'AccountController@create');

如果将控制器方法与laravel docs匹配,则资源路由定义将在accounts.store路由中提供。

确保您的AccountController还包含一个名为store的函数

答案 1 :(得分:0)

重写此路线

Route::get('/accounts', 'AccountController@create')->name('accounts.create');
Route::post('/accounts', 'AccountController@store')->name('accounts.store');

不发布

答案 2 :(得分:0)

这是因为如果您需要在资源下运行路由,那么您将覆盖路由,因此您需要给它们指定相同的路由名称 Route::post('/accounts', 'AccountController@create')->name('accounts.store'); 或者,如果您想使用资源路线,则需要将其放在路线下方,以免覆盖其名称和网址