Php Laravel 5.1中的强制验证错误
在Laravel5.1中使用验证器类时,有没有办法强制执行错误 现在,我已经用传统的方法调用了Php Laravel 5.1中的强制验证错误,php,validation,laravel,laravel-5,Php,Validation,Laravel,Laravel 5,在Laravel5.1中使用验证器类时,有没有办法强制执行错误 现在,我已经用传统的方法调用了$validator=validator::make($request->all(),$rules),效果很好。另外,我正在尝试进行另一次验证(手动验证),并将其推入$validator,但调用$validator->fails()时,我无法获得true 即使使用$validator->errors()->add('field','message')我也无法强制它。还有其他方法吗?为了使验证失败,您需要
$validator=validator::make($request->all(),$rules)
,效果很好。另外,我正在尝试进行另一次验证(手动验证),并将其推入$validator
,但调用$validator->fails()
时,我无法获得true
即使使用
$validator->errors()->add('field','message')
我也无法强制它。还有其他方法吗?为了使验证失败,您需要定义一个不符合的验证规则。最简单的方法是需要一些不存在的字段
这将实现以下目的:
$rules['some_non_existent_field'] = 'required';
$validator = Validator::make($request->all(), $rules);
dd($validator->fails());
我也有同样的问题
将错误添加到
验证器
不会使其失败,因此您需要为其设置一个陷阱,迫使其失败,可能是一个甚至不存在的必需输入…但这会给用户带来一个令人困惑的错误(例如:需要不真实的输入),
您可以很容易地更改消息,以解释是什么实际导致了流程失败…
$req = Request::all();
$rules = [/*...*/];
if(/*something's wrong*/){
$rules['unreal_input'] = 'required'; // a confusing error in your errors list...
$messages['unreal_input.required'] = '/* explain the real problem in here*/';
}
$validator = Validator::make($req, $rules,$messages);
if ($validator->fails()) return redirect()->back()->withErrors($validator)->withInput();
因此,在上面的代码中,您手动检查了是否有问题,然后为验证程序设置了陷阱,然后将消息更改为真正的问题所在。
注意:我建议您使用一个随机值,而不是像不真实的输入
,因为如果您这样做,用户可能(?)猜出输入的名称,并且很容易使用F12他/她将通过验证并向您提供一些无效数据