Laravel 6: 此路由不支持 GET 方法。支持的方法:POST 错误
Laravel 6: The GET method is not supported for this route. Supported methods: POST Error
我是 Laravel 6 的新手,我正在尝试创建一个编辑个人资料功能,但我遇到了错误:
The GET method is not supported for this route. Supported methods: POST
老实说,我不确定为什么会出现此错误。我已经交叉检查了所有内容。
配置文件控制器
更新函数
public function update(Request $request, $id)
{
$profile->nickname = $request->input('nickname');
$profile->name = $request->input('name');
$profile->birthday = $request->input('birthday');
$profile->save(); //persist the data
return redirect()->route('profile.index')->with('info','Profile got saved');
}
我的路线文件:
Route::get('/profile', 'ProfileController@index')->name('profile');
Route::put('/profile/edit/{profile}','ProfileController@update')->name('profile.update');
edit.blade.php
<form action="{{route('profile.update')}}" method="POST">
@csrf
@method('PUT')
<div class="form-group row">
<label for="nickname" class="col-md-4 col-form-label text-md-right">{{ __('Brugernavn') }}</label>
<div class="col-md-6">
<input id="nickname" type="text" class="form-control @error('nickname') is-invalid @enderror" name="nickname" value="{{ Auth::user()->nickname }}">
</div>
</div>
<!-- Submit -->
<div class="form-group row mb-0">
<div class="col-md-6 offset-md-4">
<button type="submit" class="btn btn-secondary">
Gem
</button>
</div>
</div>
</form>
在您的 edit.blade.php 文件中删除
@method('PUT')
那么你的方法将是 post only
您可以任意设置路由方式
Change Route::post('/profile/edit','ProfileController@update')->name('profile.update');
to
Route::any('/profile/edit','ProfileController@update')->name('profile.update'); change
谢谢
You are getting the error because your route expects post and you are using get method
Route::get('/profile/edit','ProfileController@edit')->name('profile.edit');
Route::put('/profile/','ProfileController@update')->name('profile.update');
public function edit() {
return view (edit);
}
public function update() {
//things to update
}
通常 Laravel 提供使用 5 种方法。
GET/contacts, mapped to the index() method and shows contacts list,
GET /contacts/create, mapped to the create() method and shows create form,
POST /contacts, mapped to the store() method and handle create form request,
GET /contacts/{contact}, mapped to the show() method and shows single item,
GET /contacts/{contact}/edit, mapped to the edit() method and shows update form,
PUT/PATCH /contacts/{contact}, mapped to the update() method and handle update form request,
DELETE /contacts/{contact}, mapped to the destroy() method and handle delete form request.
您必须更改 route.php 文件
Route::put('/profile/edit/{profile}','ProfileController@update')->name('profile.update');
然后在您的表单中更改操作
<form action="{{ route('profile.update', Auth::user()->id) }}" method="POST">
...
</form>
更多:https://www.techiediaries.com/php-laravel-crud-mysql-tutorial/
我是 Laravel 6 的新手,我正在尝试创建一个编辑个人资料功能,但我遇到了错误:
The GET method is not supported for this route. Supported methods: POST
老实说,我不确定为什么会出现此错误。我已经交叉检查了所有内容。
配置文件控制器 更新函数
public function update(Request $request, $id)
{
$profile->nickname = $request->input('nickname');
$profile->name = $request->input('name');
$profile->birthday = $request->input('birthday');
$profile->save(); //persist the data
return redirect()->route('profile.index')->with('info','Profile got saved');
}
我的路线文件:
Route::get('/profile', 'ProfileController@index')->name('profile');
Route::put('/profile/edit/{profile}','ProfileController@update')->name('profile.update');
edit.blade.php
<form action="{{route('profile.update')}}" method="POST">
@csrf
@method('PUT')
<div class="form-group row">
<label for="nickname" class="col-md-4 col-form-label text-md-right">{{ __('Brugernavn') }}</label>
<div class="col-md-6">
<input id="nickname" type="text" class="form-control @error('nickname') is-invalid @enderror" name="nickname" value="{{ Auth::user()->nickname }}">
</div>
</div>
<!-- Submit -->
<div class="form-group row mb-0">
<div class="col-md-6 offset-md-4">
<button type="submit" class="btn btn-secondary">
Gem
</button>
</div>
</div>
</form>
在您的 edit.blade.php 文件中删除
@method('PUT')
那么你的方法将是 post only
您可以任意设置路由方式
Change Route::post('/profile/edit','ProfileController@update')->name('profile.update');
to
Route::any('/profile/edit','ProfileController@update')->name('profile.update'); change
谢谢
You are getting the error because your route expects post and you are using get method
Route::get('/profile/edit','ProfileController@edit')->name('profile.edit');
Route::put('/profile/','ProfileController@update')->name('profile.update');
public function edit() {
return view (edit);
}
public function update() {
//things to update
}
通常 Laravel 提供使用 5 种方法。
GET/contacts, mapped to the index() method and shows contacts list,
GET /contacts/create, mapped to the create() method and shows create form,
POST /contacts, mapped to the store() method and handle create form request,
GET /contacts/{contact}, mapped to the show() method and shows single item,
GET /contacts/{contact}/edit, mapped to the edit() method and shows update form,
PUT/PATCH /contacts/{contact}, mapped to the update() method and handle update form request,
DELETE /contacts/{contact}, mapped to the destroy() method and handle delete form request.
您必须更改 route.php 文件
Route::put('/profile/edit/{profile}','ProfileController@update')->name('profile.update');
然后在您的表单中更改操作
<form action="{{ route('profile.update', Auth::user()->id) }}" method="POST">
...
</form>
更多:https://www.techiediaries.com/php-laravel-crud-mysql-tutorial/