当尝试登录用户时,针对特定查询显示错误,拉拉韦尔。

18 浏览
0 Comments

当尝试登录用户时,针对特定查询显示错误,拉拉韦尔。

如果尝试登录用户时某个查询返回false,我想要显示错误消息。

例如,在我的情况下,如果停用列设置为'yes',我想要向用户显示一个停用帐户的消息。

这是我的登录方法代码,我尝试添加了第二个错误,但是只要登录失败,两个错误都会返回,而不考虑失败的查询:

    public function login(Request $request)
    {
        $message = array(
            'required.email'    =>  '邮箱必填',
            'required.password' =>  '密码必填',
        );
        $this->validate($request, [
            'email' =>  'required|email',
            'password'  =>  'required|min:8',
        ]);
        $email = $request->email;
        $pass = $request->password;
        if (Auth::attempt([
            'email' => $email,
            'password' => $pass,
            'verified' => 'yes'
        ], $request->get('remember'))) {
            return redirect()->intended(route('user.account.index'));
        } else {
            return redirect()->back()->withErrors(
                [
                    'email' => '这些凭证与我们的记录不匹配或此用户已被停用!',
                    'verified' => '此用户帐户已停用!请联系支持!'
                ]
            );
        }
    }

这是我的登录视图:

    
@csrf 登录您的帐户 @if (Session::has('message')) {{ Session::get('message') }} @endif @if (Session::has('status')) {{ Session::get('status') }} @endif @error('verified') {{ $message }} @enderror @error('email') {{ $message }} @enderror @error('password') {{ $message }} @enderror 忘记密码?

0
0 Comments

问题:当尝试登录用户时,特定查询的显示错误。

原因:可能是因为使用了redirect witherror方法导致的问题。

解决方法:建议使用session flash messages代替redirect witherror方法。它具有在多种情况下运行自定义消息的优势。可以像这样实现:https://www.itsolutionstuff.com/post/laravel-5-implement-flash-messages-with-exampleexample.html。另外,建议查看这个链接以了解如何根据条件自定义消息:In Laravel, the best way to pass different types of flash messages in the session

0