我有一个表单,其中包含一些显示或隐藏每个字段的条件逻辑。我只想验证显示的字段。请参阅下面的验证脚本中的字段列表,并想象我隐藏了电话"在视图中使用条件逻辑的表单字段 - 我仍然想要验证其余字段,但是如果" phone"验证仍然存在,脚本失败并显示错误消息"电话号码是必需的。"
在Laravel 5中,有没有办法检查表单字段是否存在,或者在验证表单之前或之后动态地改变它是否需要?
这是我的验证码......
$v = Validator::make(input()->all(), [
'firstName' => 'required|Min:1|Max:80',
'lastName' => 'required|Min:1|Max:80',
'address' => 'required|Min:10|Max:80',
'address2' => 'Max:20',
'city' => 'required|Min:2|Max:80',
'state' => 'required|Min:2|Max:80',
'zip' => 'required|Min:5',
'phone' => 'required|regex:'.validPhoneRegex(),
]);
if($v->fails())
{
return redirect()->back()->withErrors($v)->withInput(input()->all());
}
答案 0 :(得分:1)
您可以使用sometimes()
方法:
$v->sometimes('phone', 'required', function($input) {
//Your condition here, the "required" validation on the "phone" field will
only run if this returns true
});
然后,您可以从初始验证中删除phone
。
来自文档:
注意:传递给Closure的$ input参数将是Illuminate \ Support \ Fluent的一个实例,可用于访问您的输入和文件。
请参阅文档here
答案 1 :(得分:1)
以下验证规则应该完成这项工作:
'phone' => 'sometimes|regex:'.validPhoneRegex(),