【发布时间】:2019-06-02 14:16:36
【问题描述】:
我正在关注 Laravel 的教程,但出现错误:
此路由不支持 GET 方法。支持的方法:POST。
web.php的代码是这样的:
Route::get('/', function () {
return view('welcome');
});
Auth::routes();
Route::get('/p/create', 'PostsController@create');
Route::post('/p', 'PostsController@store');
Route::get('/profile/{user}', 'ProfilesController@index')->name('profile.show');
create.blade.php 的代码是这样的:
<form action="/p" enctype="multipart/form-data" method="POST">
@csrf
...
PostsController.php的代码
public function __construct(){
$this->middleware('auth');
}
public function create(){
return view('posts.create');
}
public function store(){
$data = request()->validate([
'caption' => 'required',
'image' => ['required', 'image'],
]);
auth()->user()->posts()->create($data);
dd(request()->all());
}
你有什么想法吗?
【问题讨论】:
-
错误发生在哪一行?显然,您正试图从不支持它的页面
GET。从你的代码判断是哪个,可能/p/create。 -
我希望你在表单发布后没有在你的代码中做任何重定向。
-
您很可能正试图从
PostController中的store方法返回视图。但是您不能从post路由返回视图。 -
在处理完表单后重定向到
get路由,并从该路由返回视图。 -
我用 PostsController.php 的代码更新了帖子。 @Martin 我不知道错误发生在哪一行,我只有那个错误,没有更多解释。