【问题标题】:Route [/admin/update-pwd] not defined路由 [/admin/update-pwd] 未定义
【发布时间】:2019-12-17 18:00:54
【问题描述】:

我正在尝试更改管理员密码,但它显示:未定义路由 [/admin/update-pwd]。怎么改?

控制器:

   public function changepassword()
{
    return view('admin.changepassword');
}

public function chkPassword(Request $request){
    $data = $request->all();
    $adminCount = Admin::where(['username' => Session::get('adminSession'),'password'=>md5($data['current_pwd'])])->count(); 
        if ($adminCount == 1) {
            echo "true"; die;
        } else {
            echo "false"; die;
        }

}

public function updatePassword(Request $request){
    if($request->isMethod('post')){
        $data = $request->all();
        $adminCount = Admin::where(['username' => Session::get('adminSession'),'password'=>md5($data['current_pwd'])])->count();

        if ($adminCount == 1) {
            $password = md5($data['new_pwd']);
            Admin::where('username',Session::get('adminSession'))->update(['password'=>$password]);
            return redirect('/admin/settings')->with('flash_message_success', 'Password updated successfully.');
        }else{
            return redirect('/admin/settings')->with('flash_message_error', 'Current Password entered is incorrect.');
        }

    }
}

刀片文件:

   <form method="POST" action="{{ route('/admin/update-pwd') }}" enctype="multipart/form-data">
                    @csrf
                    @method('PATCH')
                    <strong class="text-muted d-block mb-2">Enter Current Password</strong>
                    <div class="input-group mb-3">
                      <div class="input-group input-group-seamless">
                        <input type="password" name="current_pwd" class="form-control @error('password') is-invalid @enderror" id="form2-password" placeholder="Password">
                        <span class="input-group-append">
                          <span class="input-group-text">
                            <i class="material-icons">lock</i>
                          </span>
                        </span>
                      </div>
                    </div>
                    <strong class="text-muted d-block mb-2">Enter New Password</strong>
                    <div class="input-group mb-3">
                      <div class="input-group input-group-seamless">
                        <input type="password" name="new_pwd" class="form-control @error('password') is-invalid @enderror" id="form2-password" placeholder="Password">
                        <span class="input-group-append">
                          <span class="input-group-text">
                            <i class="material-icons">lock</i>
                          </span>
                        </span>
                      </div>
                    </div>
                    <strong class="text-muted d-block mb-2">Confirm New Password</strong>
                    <div class="input-group mb-3">
                      <div class="input-group input-group-seamless">
                        <input type="password" name="confirm_pwd" class="form-control @error('password') is-invalid @enderror" id="form2-password" placeholder="Password">
                        <span class="input-group-append">
                          <span class="input-group-text">
                            <i class="material-icons">lock</i>
                          </span>
                        </span>
                      </div>
                    </div>
                    @error('password')
                        <div class="small text-danger">{{ $message }}</div>
                    @enderror
                    <button type="submit" class="mb-2 btn btn-primary mr-2">Update Password</button>
                  </form>

路线:

  Route::get('/admin/changepassword', 'ChangepasswordController@changepassword');
Route::get('/admin/check-pwd','AdminController@chkPassword');
Route::match(['get', 'post'],'/admin/update-pwd','AdminController@updatePassword');

【问题讨论】:

  • 请不要在您的问题中多次发布相同的文本以绕过字符限制。存在限制是为了鼓励您解释您的问题。通过发布冗余文本来避免为其他用户创建额外工作的限制 - 不好。

标签: laravel eloquent laravel-5.8


【解决方案1】:

您正在尝试在表单方法中使用 Laravel 命名路由。使用Laravel Named Routed,并在您的表单中定义它。

//web.php内

Route::post('/admin/update-pwd','AdminController@updatePassword')->name('admin/update-pwd');

然后你就可以使用内部表单了

<form method="POST" action="{{ route('/admin/update-pwd') }}" enctype="multipart/form-data">

【讨论】:

    【解决方案2】:

    当您使用 route 帮助程序时,它希望您提供路由名称而不是 URI,因此添加以下内容:

    Route::match(['get', 'post'],'/admin/update-pwd','AdminController@updatePassword')
         ->name('admin.update_password');
    

    那么在你看来你可以使用:

    route('admin.update_password');
    

    或者改用url 辅助方法:

    // instead of this
    {{ route('/admin/update-pwd') }}
    
    //use
    {{ url('/admin/update-pwd') }}
    

    【讨论】:

    • 现在错误已被删除,但是当我尝试更改密码时,passowrd 没有更改它说 404|not found
    • 是的,那是因为您将 post 方法与您的路线相匹配,但您使用 patch 的形式,所以要么删除该指令 @method('patch'),要么在您的 web.php 文件中更改它。
    • 我从表单中删除了@method('patch') 但还是一样
    • 您可以将您的应用程序设置为debug 模式并在此处分享错误的痕迹以获得更多帮助。 404 表示找不到路由,所以我不知道你为它做了什么改变使它不起作用.. 似乎它正在到达一个不存在的端点。你能分享更多细节吗?
    • paste.ofcode.org/6Lu9RL4RnQMDL82Q4BnzST 目前这是表格
    猜你喜欢
    • 1970-01-01
    • 2018-11-13
    • 1970-01-01
    • 1970-01-01
    • 2019-01-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-02
    相关资源
    最近更新 更多