Laravel 5.2 - 验证:显示自定义错误消息
Laravel 5.2 - Auth: display custom error messages
如何自定义在不成功时显示的错误消息(例如 "These credentials do not match our records."
)login/registration 而无需触及基础文件?我正在寻找一个解决方案,希望是一个优雅的解决方案,至少不会触及 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>
谢谢!
您可以在来自 AuthenticatesUsers
特征
的 AuthController
上覆盖 getFailedLoginMessage
protected function getFailedLoginMessage()
{
return 'what you want here.';
}
或者不覆盖它并为 auth.failed
设置一个 lang 值。 getFailedLoginMessage
方法将检查 Lang::has('auth.failed')
并在可用时使用它。
对于实际的验证错误消息,您可以覆盖 postLogin
并将您自己的消息数组传递给 validate
,或者如果您想全局更改它们,您可以在适当的语言中调整它们resources/lang/{lang}/validation.php
.
中的文件
您不想覆盖 AuthController 中的 getFailedLoginMessage() 方法。正确的解决方案是更改设计位置的消息。如果您查看 Resources > lang > en 文件夹,您将看到一个 auth.php 文件。其中有一个 "failed" 属性,其中包含您可以自定义的消息。在那里换。供应商中 Laravel 身份验证文件中的原始 getFailedLoginMessage() 方法首先在该位置查找自定义消息,然后再确定默认值。
如何自定义在不成功时显示的错误消息(例如 "These credentials do not match our records."
)login/registration 而无需触及基础文件?我正在寻找一个解决方案,希望是一个优雅的解决方案,至少不会触及 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>
谢谢!
您可以在来自 AuthenticatesUsers
特征
AuthController
上覆盖 getFailedLoginMessage
protected function getFailedLoginMessage()
{
return 'what you want here.';
}
或者不覆盖它并为 auth.failed
设置一个 lang 值。 getFailedLoginMessage
方法将检查 Lang::has('auth.failed')
并在可用时使用它。
对于实际的验证错误消息,您可以覆盖 postLogin
并将您自己的消息数组传递给 validate
,或者如果您想全局更改它们,您可以在适当的语言中调整它们resources/lang/{lang}/validation.php
.
您不想覆盖 AuthController 中的 getFailedLoginMessage() 方法。正确的解决方案是更改设计位置的消息。如果您查看 Resources > lang > en 文件夹,您将看到一个 auth.php 文件。其中有一个 "failed" 属性,其中包含您可以自定义的消息。在那里换。供应商中 Laravel 身份验证文件中的原始 getFailedLoginMessage() 方法首先在该位置查找自定义消息,然后再确定默认值。