首页 > 解决方案 > Laravel 错误“目标类 [App\Http\Controllers\ResetPasswordController] 不存在。”

问题描述

我正在尝试change password.blade.php通过链接访问我的重置密码页面,但它抛出了一个错误,说明:Illuminate\Contracts\Container\BindingResolutionException Target class [App\Http\Controllers\ResetPasswordController] does not exist.

这是到页面的路径web.php

/**CHANGE PASS */
Route::get('/updatepassword', 'ResetPasswordController@updatePassword');

这是我在控制器中的代码ResetPasswordController.php

<?php

namespace App\Http\Controllers\Auth;

use App\Http\Controllers\Controller;
use Illuminate\Foundation\Auth\ResetsPasswords;

class ResetPasswordController extends Controller
{
    /*
    |--------------------------------------------------------------------------
    | Password Reset Controller
    |--------------------------------------------------------------------------
    |
    | This controller is responsible for handling password reset requests
    | and uses a simple trait to include this behavior. You're free to
    | explore this trait and override any methods you wish to tweak.
    |
    */

    /** SUBMIT UPDATE PASSWORD
     *
     * @param request data
     * @redirect user profile view
     */
    
    public function updatePassword(Request $request){
        /*Grab authenticated user record*/
        if(empty($request->id)){
            $id = Auth::user()->id;
        }
        else{
            $id = $request->id;
        }
        /*Update query*/
        $update = User::where('id','=',$id)->first();

        $update->password = bcrypt($request->password);

        $update->save();
        return response($update);
    }

    /**
     * Where to redirect users after resetting their password.
     *
     * @var string
     */
    protected $redirectTo = '/home';
}
?>

我不知道我做错了什么,所以如果您发现任何错误,我将非常感谢您的帮助。谢谢!

标签: phplaravelroutescontroller

解决方案


如果你检查你的RouteServiceProvider,你会看到它将它用于控制器的命名空间设置web.phpApp\Http\Controllers. 您要使用的控制器位于命名空间中,App\Http\Controllers\Auth因此您必须指定命名空间的这个附加部分才能找到它:

Route::get('...', 'Auth\ResetPasswordController');

由于它被设置为使用App\Http\Controllers命名空间,它现在将使用 Controller App\Http\Controllers\Auth\ResetPasswordController;没有指定命名空间的附加部分,您最终会得到App\Http\Controllers\ResetPasswordController,这是您当前面临的问题。

App\Http\Controllers\ResetPasswordController不是App\Http\Controllers\Auth\ResetPasswordController


推荐阅读