2016-01-12 11 views
7

Come posso personalizzare i messaggi di errore (come "These credentials do not match our records.") che vengono visualizzati in caso di accesso/registrazione senza successo senza dover toccare i file di fondazione? Sto cercando una soluzione e, auspicabilmente, un elegante uno, almeno non toccare né AuthenticatesAndRegistersUsersThrottlesLogins :)Laravel 5.2 - Auth: visualizza messaggi di errore personalizzati

sto usando le AuthController ei moduli forniti da laravel dopo l'esecuzione:

php artigianale marca: auth

regolatore:

(ha solo un costruttore e due metodi, il resto cade sul foun dazione, i metodi sono :)

protected function validator(array $data) 
{ 
    return Validator::make($data, [ 
     'name' => 'required|max:255', 
     'email' => 'required|email|max:255|unique:users', 
     'password' => 'required|confirmed|min:6', 
    ]); 
} 
protected function create(array $data) 
{ 
    return User::create([ 
     'name' => $data['name'], 
     'email' => $data['email'], 
     'password' => bcrypt($data['password']), 
    ]); 
} 

Forma:

<form class="form-horizontal" role="form" method="POST" action="{{ url('/login') }}"> 
{!! csrf_field() !!} 

<div class="form-group{{ $errors->has('email') ? ' has-error' : '' }}"> 
    <label class="col-md-4 control-label">E-Mail</label> 

    <div class="col-md-6"> 
     <input type="email" class="form-control" name="email" value="{{ old('email') }}" required> 

     @if ($errors->has('email')) 
      <span class="help-block"> 
       <strong>{{ $errors->first('email') }}</strong> 
      </span> 
     @endif 
    </div> 
</div> 

<div class="form-group{{ $errors->has('password') ? ' has-error' : '' }}"> 
    <label class="col-md-4 control-label">Password</label> 

    <div class="col-md-6"> 
     <input type="password" class="form-control" name="password" required> 

     @if ($errors->has('password')) 
      <span class="help-block"> 
       <strong>{{ $errors->first('password') }}</strong> 
      </span> 
     @endif 
    </div> 
</div> 

<div class="form-group"> 
    <div class="col-md-6 col-md-offset-4"> 
     <div class="checkbox"> 
      <label> 
       <input type="checkbox" name="remember"> Remember Me 
      </label> 
     </div> 
    </div> 
</div> 

<div class="form-group"> 
    <div class="col-md-6 col-md-offset-4"> 
     <button type="submit" class="btn btn-primary"> 
      <i class="fa fa-btn fa-sign-in"></i>Login 
     </button> 

     <a class="btn btn-link" href="{{ url('/password/reset') }}">Forgot Your Password?</a> 
    </div> 
</div> 

Grazie!

risposta

11

È possibile ignorare getFailedLoginMessage sul AuthController che proviene dal AuthenticatesUsers trait

protected function getFailedLoginMessage() 
{ 
    return 'what you want here.'; 
} 

O non annullarlo e impostare un valore lang per auth.failed. Il metodo getFailedLoginMessage controllerà per Lang::has('auth.failed') e lo userà se disponibile.

Per i messaggi di errore di convalida effettivi è possibile ignorare la postLogin e superare la propria gamma di messaggi a validate, o se si voleva cambiare globalmente si possono registrare nel file appropriato lang in resources/lang/{lang}/validation.php.

+0

Grazie per la risposta @lagbox! Che ne dici di ogni altro messaggio di errore, "Il campo del nome è obbligatorio." o "La conferma della password non corrisponde". sul modulo di registrazione dell'utente? –

+1

quelli sono i messaggi di convalida, è possibile regolare il controllore auth per passare la propria serie di messaggi nella chiamata valida o aggiornarli globalmente nel file lang da cui estraggono. – lagbox

+0

Accettato e svalutato, grazie buon signore! –

4

Non si desidera eseguire l'override del metodo getFailedLoginMessage() in AuthController. La soluzione corretta è quella di cambiare il messaggio nella posizione progettata. Se guardi nella cartella Risorse> lang> it, vedrai un file auth.php. In esso, c'è un attributo "fallito" con un messaggio che puoi personalizzare. Cambialo lì Il metodo originale getFailedLoginMessage() nei file di autenticazione di Laravel nel fornitore cerca prima quella posizione per un messaggio personalizzato, prima di stabilirsi sul valore predefinito.

+0

Grazie Joshua !! :) –