Laravel 5.7 在使用中无法声明类名

11 浏览
0 Comments

Laravel 5.7 在使用中无法声明类名

我正在尝试在我的网站上实现多重身份认证;我想要一个视图来作为用户登录,另一个视图作为客户登录。我有一个用户表,并且我使用代码而不是邮件来创建一个客户表,使用mtpass代替密码。

ClientLoginController

middleware('auth:client');
    }
    public function login()
    {
        return view('client.auth.login');
    }
    public function showClientLoginForm()
    {
        return view('auth.loginClient', ['url' => 'client']);
    }
    public function clientLogin(Request $request)
    {
        $this->validate($request, [
            'Code' => 'required|email',
            'Mtpass' => 'required|min:4'
        ]);
        if (Auth::guard('client')->attempt(['Code' => $request->Code, 'Mtpass' => $request->Mtpass], $request->get('remember'))) {
            return redirect()->intended('/main');
        }
        return back()->withInput($request->only('Code', 'remember'));
    }
}

LoginController

middleware('guest')->except('logout');
        $this->middleware('guest:client')->except('logout');
    }
    public function showClientLoginForm()
    {
        return view('auth.loginClient', ['url' => 'client']);
    }
    public function clientLogin(Request $request)
    {
        $this->validate($request, [
            'Code' => 'required|email',
            'Mtpass' => 'required|min:4'
        ]);
        if (Auth::guard('client')->attempt(['Code' => $request->Code, 'Mtpass' => $request->Mtpass], $request->get('remember'))) {
            return redirect()->intended('/main');
        }
        return back()->withInput($request->only('Code', 'remember'));
    }
    protected function redirectTo()
    {
        $role_id = auth()->user()->role_id;
        if (auth()->check()) {
            switch ($role_id) {
                case 1:
                    return 'admin/profil';
                case 2:
                    return 'client/profil';
                case 3:
                    return 'agent/profil';
            }
        }
        return '/main';
    }
}

我无法弄清楚如何修复以下错误。

Cannot declare class App\Http\Controllers\ClientLoginController, because the name is already in use

有人可以帮我修复并理解发生了什么吗?非常感谢大家!

0
0 Comments

问题原因:Laravel 5.7中出现了“Cannot Declare Class Name in Use”错误的原因是在使用use语句时,可能会引起命名冲突。

解决方法:可以通过以下步骤解决这个问题。

1. 首先,打开终端并进入项目目录。

2. 运行以下命令以更新Composer自动加载器:

composer dump-autoload

3. 如果上述命令无法解决问题,可以尝试以下解决方法。

4. 打开composer.json文件,并找到"autoload"部分。

5. 在"autoload"部分中,找到"psr-4"键,然后在该键的值中添加一个新的命名空间。

"autoload": {

"psr-4": {

"App\\": "app/",

"MyNamespace\\": "app/MyNamespace/" // 新添加的命名空间

}

}

6. 保存并关闭composer.json文件。

7. 运行以下命令以重新生成Composer自动加载器:

composer dump-autoload

8. 现在,尝试重新运行应用程序,应该不再出现“Cannot Declare Class Name in Use”错误。

希望上述方法能够解决您在使用Laravel 5.7时遇到的“Cannot Declare Class Name in Use”问题。如果问题仍然存在,请参考提供的Stack Overflow链接,可能会有其他解决方案可用。

0