Symfony\Component\HttpKernel\Exception\MethodNotAllowedHttpException。此路由不支持 GET 方法。支持的方法:POST

问题描述 投票:0回答:1

我最近开始学习 Laravel,正在研究这个密码重置 api,但是每当我点击登录页面上的忘记密码行时,我都会处理这个错误。

这是 web.php:

    Route::get('/userPasswordChange', 'HomeController@changePassword')->name('userPasswordChange');
    Route::post('/userPasswordChange', 'HomeController@changePasswordStore')->name('change.password');

这是 HomeController.php:

   public function changePassword(){
        return view('userPasswordChange');
    }
    public function changePasswordStore(Request $request)
    {
        $request->validate([
            'current_password' => ['required', new MatchOldPassword],
            'new_password' => ['required'],
            'new_confirm_password' => ['same:new_password'],
        ]);
   
        User::find(auth()->user()->id)->update(['password'=> Hash::make($request->new_password)]);
   
        return redirect()->route('change.password')->with('success','Thay đổi mật khẩu thành công.');
    }

这是 userPasswordChange.blade.php:

@extends('user.layouts.master')
@section('main-content')
<div class="container">
    <div class="row">
        <div class="col-md-12">
            <div class="card">
                <div class="card-header">Đổi mật khẩu</div>
   
                <div class="card-body">
                    <form method="POST" action="{{ route('change.password') }}">
                        @csrf 
   
                         @foreach ($errors->all() as $error)
                            <p class="text-danger">{{ $error }}</p>
                         @endforeach 
  
                        <div class="form-group row">
                            <label for="password" class="col-md-4 col-form-label text-md-right">Mật khẩu hiện tại</label>
  
                            <div class="col-md-6">
                                <input id="password" type="password" class="form-control" name="current_password" autocomplete="current-password">
                            </div>
                        </div>
  
                        <div class="form-group row">
                            <label for="password" class="col-md-4 col-form-label text-md-right">Mật khẩu mới</label>
  
                            <div class="col-md-6">
                                <input id="new_password" type="password" class="form-control" name="new_password" autocomplete="current-password">
                            </div>
                        </div>
  
                        <div class="form-group row">
                            <label for="password" class="col-md-4 col-form-label text-md-right">Xác nhận mật khẩu mới</label>
    
                            <div class="col-md-6">
                                <input id="new_confirm_password" type="password" class="form-control" name="new_confirm_password" autocomplete="current-password">
                            </div>
                        </div>
   
                        <div class="form-group row mb-0">
                            <div class="col-md-8 offset-md-4">
                                <button type="submit" class="btn btn-primary">
                                    Cập nhật mật khẩu
                                </button>
                            </div>
                        </div>
                    </form>
                </div>
            </div>
        </div>
    </div>
</div>
@endsection

感谢您的帮助!

注意:我确实尝试过缓存重置

php laravel routes
1个回答
0
投票

您有当前路线

Route::get('/userPasswordChange', 'HomeController@changePassword')->name('userPasswordChange');
Route::post('/userPasswordChange', 'HomeController@changePasswordStore')->name('change.password');

在当前方法中

public function changePasswordStore(Request $request)
{
    ...
    return redirect()->route('change.password')->with('success','Thay đổi mật khẩu thành công.');
}

正如您在重定向中看到的,它重定向到相同的 POST 路由

change.password
。如果这是您希望重定向的预期路线,您应该将其更改为您的获取路线
userPasswordChange
。其他 GET 路线。

总长:

public function changePasswordStore(Request $request)
{
    ...
    return redirect()->route('userPasswordChange')->with('success','Thay đổi mật khẩu thành công.');
}
© www.soinside.com 2019 - 2024. All rights reserved.