Php Laravel 5.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')我也无法强制它。还有其他方法吗?为了使验证失败,您需要

在Laravel5.1中使用验证器类时,有没有办法强制执行错误

现在,我已经用传统的方法调用了
$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他/她将通过验证并向您提供一些无效数据