Skip to content
Advertisement

Class AppHttpControllersManagerLoginController does not exist

I have been making a custom multi-auth and got the following error:

Class AppHttpControllersManagerLoginController does not exist

I have been searching for this error but couldn’t find the solution. I have attached the screenshot from my controller in the directory.

enter image description here

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'));
    }
}

web.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');

Advertisement

Answer

Since ManagerController is not in root Controllers you need to specify namespace in your routes.

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');
}

It is my mistake. I thought your controllers are located in Auth folder. As others have already answered, the namespace in your controller should be without Auth.

User contributions licensed under: CC BY-SA
3 People found this is helpful
Advertisement