Laravel 5.2 – Auth: отображать собственные сообщения об ошибках

Как настроить сообщения об ошибках (например, "These credentials do not match our records." ), которые отображаются при неудачной регистрации / регистрации без необходимости касаться файлов фундамента? Я ищу решение и, надеюсь, элегантный, по крайней мере, не касаясь AuthenticatesAndRegistersUsers и ThrottlesLogins 🙂

Я использую AuthController и формы, предоставленные Laravel после выполнения:

php artisan make: auth

контроллер:

(он имеет только конструктор и два метода, остальные – на фундаменте, методы:

 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']), ]); } 

Форма:

 <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> 

Спасибо!

Вы можете переопределить getFailedLoginMessage на AuthController который исходит из AuthController AuthenticatesUsers

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

Или не переопределите его и установите значение lang для auth.failed . Метод getFailedLoginMessage будет проверять наличие Lang::has('auth.failed') и использовать его, если он доступен.

Для фактических сообщений об ошибках проверки вы можете переопределить postLogin и передать свой собственный массив сообщений для validate , или если вы хотите их изменить глобально, вы можете настроить их в соответствующем lang-файле в resources/lang/{lang}/validation.php ,

Вы не хотите переопределять метод getFailedLoginMessage () в AuthController. Правильное решение состоит в том, чтобы изменить сообщение в планируемом местоположении. Если вы заглянете в папку Resources> lang> en, вы увидите файл auth.php. В нем есть атрибут «failed» с сообщением, которое вы можете настроить. Измени его. Метод orignial getFailedLoginMessage () в файлах auth Laravel в поставщике сначала ищет это местоположение для пользовательского сообщения, прежде чем устанавливать значение по умолчанию.