Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Class App\Http\Controllers\ManagerLoginController does not exist

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

Class App\Http\Controllers\ManagerLoginController 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');
like image 904
Zain Farooq Avatar asked Jan 01 '23 16:01

Zain Farooq


1 Answers

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.

like image 197
Dino Numić Avatar answered Jan 05 '23 09:01

Dino Numić