4

我一直在进行自定义多重身份验证并收到以下错误:

类 App\Http\Controllers\ManagerLoginController 不存在

我一直在寻找这个错误,但找不到解决方案。我已将我的控制器的屏幕截图附加到目录中。

在此处输入图像描述

ManagerLoginController.php

class ManagerLoginController extends Controller
{
    public function __construct()
    {
        $this->middleware('guest')->except('logout');
    }

    public function showManagerLoginForm()
    {
        return view('auth.login', ['url' => 'manager']);
    }

    public function managerLogin(Request $request)
    {
        $this->validate($request, [
            'email' => 'required|email',
            'password' => 'required|min:8'
        ]);

        if (Auth::guard('manager')->attempt(['email' => $request->email, 'password' => $request->password],
            $request->get('remember'))) {

            return redirect()->intended('login/manager');
        }

        return back()->withInput($request->only('email', 'remember'));
    }
}

网页.php

Route::get('/', function () {
    return view('welcome');
});

Auth::routes();

Route::get('/home', 'HomeController@index')->name('home');
Route::get('/manager/login', 'ManagerLoginController@showManagerLoginForm')->name('manager.login');
Route::post('/manager/login', 'ManagerLoginController@managerLogin');
Route::get('/manager/register', 'ManagerRegisterController@showManagerRegisterForm')->name('manager.register');
Route::post('/manager/register', 'ManagerRegisterController@createManager');
Route::get('/manager', 'ManagersController@redirectAuthenticatedManager');
4

3 回答 3

6

由于 ManagerController 不在根控制器中,因此您需要在路由中指定命名空间。

Route::namespace('Auth')->group(function () {
   Route::get('/manager/login','ManagerLoginController@showManagerLoginForm')->name('manager.login');
   Route::post('/manager/login', 'ManagerLoginController@managerLogin');
   Route::get('/manager/register', 'ManagerRegisterController@showManagerRegisterForm')->name('manager.register');
   Route::post('/manager/register', 'ManagerRegisterController@createManager');
}

这是我的错。我认为您的控制器位于 Auth 文件夹中。正如其他人已经回答的那样,您的控制器中的命名空间应该没有 Auth。

于 2019-09-04T12:44:26.873 回答
3

问题是您的命名空间。您正在使用命名空间namespace App\Http\Controllers\Auth;,但您的控制器在App\Http\Controllers目录中。因此,要么更改命名空间,要么将控制器移动到Auth文件夹。

于 2019-09-04T12:43:20.440 回答
0

我有同样的问题原来我拼错了控制器的名称,如果你在这里并且你无法弄清楚问题是什么,我建议你仔细检查你的名字,以确保。

〜问候

于 2022-01-12T11:18:45.223 回答