仅捕获login.blade Laravel中的无效凭据错误

时间:2018-07-08 19:44:43

标签: laravel

我正在使用Laravel中的自定义登录控制器。我在输入字段下方的a中有验证消息。 一切正常。 我现在想要的是仅在用户或密码不正确且位于另一个div中时显示消息“凭据不正确”。我的意思是,如果触发其他验证错误,则此消息应该不可见。

errors->具有('email')数组不仅可以捕获此错误,还可以捕获其余的错误,例如“必填字段”。

有人知道如何编写仅捕获此“无效凭据”错误消息的条件吗?

模板下方。 预先感谢您的帮助!

@extends ('layouts.default')

@section('content')

@if ($errors->has('email')) {{-- I want the credential error here, but only 
for credential error is triggered --}}
<div class="warning">
    <div class="input-icon">
    <i style="font-size:1.5em; color:Tomato; margin-right:5px;" class="fas 
fa-exclamation-triangle"></i>
    </div>
    <p>Usuario o contraseña incorrecta</p>
</div>
@endif

<main class="login-page">
<div class="contact login">
    <div class="titulos">
        <p>Ingresar</p>
        <p><a href="register">Soy nuevo</a></p>
    </div>

    <form method="post">
        @csrf
        <div class="input-group input-group-icon">
            <input type="email" name="email" placeholder="Correo electrónico" 
value="{{ old('email') }}" autofocus/>
            <div class="input-icon">
                <i class="fas fa-envelope"></i>
            </div>
            <span class="obligatorio" > {{ $errors->first('email') }}</span>
        </div>

        <div class="input-group input-group-icon">
            <input type="password" name="contraseña" 
placeholder="Contraseña"/>
            <div class="input-icon">
                <i class="fas fa-lock"></i>
            </div>
            <span class="obligatorio" >{{ $errors->first('contraseña') }} 

            

        <div class="input-group">
            <input type="submit" value="Ingresar" />
            <a href="{{ route('password.request') }}">Olvidé mi 
contraseña</a>
        </div>
        <div>
        <label>
            <input type="checkbox" name="recordar" id="cbox1" 
value="recordar" {{ old('recordar') ? 'checked' : '' }}>
            <span>Recordar mi usuario</span>
        </label>
        </div>
    </form>

</div>
</main>
 @endsection

1 个答案:

答案 0 :(得分:0)

在我的一个旧的初学者项目中,我是这样做的:

 <div class="form-group{{ $errors->has('text') ? ' has-error' : '' }}">
                        <label for="name" class="col-md-4 control-label">@lang('views/auth/login.username')</label>
                        <div class="col-md-6">
                            <input id="name" type="text" class="form-control" name="name">
                            @if ($errors->has('text'))
                                <span class="help-block">
                                    <strong>{{ $errors->first('text') }}</strong>
                                </span>
                            @endif
                        </div>
                    </div>
                    <div class="form-group{{ $errors->has('password') ? ' has-error' : '' }}">
                        <label for="password" class="col-md-4 control-label">@lang('views/auth/login.password')</label>
                        <div class="col-md-6">
                            <input id="password" type="password" class="form-control" name="password">
                            @if ($errors->has('password'))
                                <span class="help-block">
                                    <strong>{{ $errors->first('password') }}</strong>
                                </span>
                            @endif
              </div>
      </div>

在控制器内部,我刚刚捕获到异常:

public function authenticate(Request $request)
{
    try {
        $this->ldapHelper->checkCredentials($request->name, $request->password);
        $ldapUserData = $this->ldapHelper->getFormattedUserData(request('name'));
        $this->sessionService->login($ldapUserData);

        return redirect()->route('form.formular');

    } catch (\Exception $e) {
        return back()->withInput()->withErrors([
            'message' => $e->getMessage(),
        ]);
    }
}

也许有帮助!