我有一个包含2个单独表格,路线和请求的页面。
在这种形式中,我有一个具有相同名称的字段(例如,每个表单中都有[0-9:]*
字段)。
问题是当我验证一个表单并且表单有错误时,两种表单都会显示错误。
如何防止覆盖错误?
这是我的代码:
注册申请:
email
登录请求:
class RegisterFormRequest extends FormRequest
{
/**
* Get the validation rules that apply to the request.
*
* @return array
*/
public function rules()
{
return [
'email' => 'required|email|unique:users',
'name' => 'required',
'location' => 'required'
];
}
}
刀片中的我使用以上两种形式的电子邮件字段上面的代码:
class LoginFormRequest extends FormRequest
{
/**
* Get the validation rules that apply to the request.
*
* @return array
*/
public function rules()
{
return [
'email' => 'required|email',
'password' => 'required'
];
}
}
当我没有在登录表单中输入电子邮件并提交时,错误也会在注册表单中显示在电子邮件字段的上方。
答案 0 :(得分:2)
最后我找到了解决方案。
我应该在$errorBag
文件中添加Request
变量:
class RegisterFormRequest extends FormRequest
{
protected $errorBag = 'register';
/**
* Get the validation rules that apply to the request.
*
* @return array
*/
public function rules()
{
return [
'email' => 'required|email|unique:users',
'name' => 'required',
'location' => 'required'
];
}
}
并且在刀片中:
{{$errors->register->has('email') ? 'has-error' : null }}
答案 1 :(得分:0)
我有一个解决方案,但我不确定这是否是最佳方式。登录控制器使用包含方法AuthenticatesUsers
sendFailedLoginResponse
特征
通过在LoginController
中覆盖此方法,您可以将错误消息包命名为:
protected function sendFailedLoginResponse(Request $request)
{
$errors = [$this->username() => trans('auth.failed')];
if ($request->expectsJson()) {
return response()->json($errors, 422);
}
return redirect()->back()
->withInput($request->only($this->username(), 'remember'))
->withErrors($errors, 'login');
}
然后,在您的刀片文件中,您可以执行以下操作:
@if (! $errors->login->isEmpty())
<ul>
@foreach ($errors->login->all() as $error)
<li>{{ $error }}</li>
@endforeach
</ul>
@endif