【问题标题】:Laravel error “Target class [App\Http\Controllers\ResetPasswordController] does not exist.”Laravel 错误“目标类 [App\Http\Controllers\ResetPasswordController] 不存在。”
【发布时间】:2020-11-29 12:59:02
【问题描述】:

我正在尝试通过链接访问我的重置密码页面 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';
}
?>

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

【问题讨论】:

  • App\Http\Controllers\ResetPasswordController 不是App\Http\Controllers\Auth\ResetPasswordController
  • @lagbox 我对你的说法感到困惑。
  • @lagbox 你介意详细说明吗?

标签: php laravel routes controller


【解决方案1】:

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

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

由于它被设置为使用App\Http\Controllers 命名空间,它现在将使用控制器App\Http\Controllers\Auth\ResetPasswordController;如果不指定命名空间的其他部分,您最终会得到App\Http\Controllers\ResetPasswordController,这是您当前面临的问题。

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

【讨论】:

  • 当我指定命名空间的那一部分时,它会抛出这个错误ReflectionException Class App\Http\Controllers\Auth\Request does not exist
  • 这是一个完全不同的问题,与该控制器文件中的 PHP 命名空间有关......您需要了解命名空间在 PHP 中的工作原理才能继续进行
  • @DevMatt 我强烈建议您阅读:mattstauffer.com/blog/a-brief-introduction-to-php-namespacing 如果您在阅读本文后仍有疑问,请告诉我,祝您好运
  • 非常感谢!非常感谢您的帮助!
猜你喜欢
  • 2017-09-29
  • 2020-05-01
  • 1970-01-01
  • 1970-01-01
  • 2020-06-24
  • 1970-01-01
  • 2021-02-12
  • 2020-03-27
  • 2020-06-18
相关资源
最近更新 更多