2015-10-02 28 views
1

我有一个窗体,有一些条件逻辑,显示或隐藏每个字段。我只想验证显示的字段。在下面的验证脚本中查看字段列表,并想象我在视图中使用条件逻辑来隐藏“phone”表单字段 - 我仍然想验证其余字段,但是如果“电话”验证仍然存在,脚本失败并显示错误消息,说“电话号码是必需的。”检查表单字段是否存在做表单验证时? Laravel 5

在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()); 
     } 

回答

1

下面的验证规则应该做的工作:

'phone' => 'sometimes|regex:'.validPhoneRegex(), 
+0

这是一个非常简单的方法来做到这一点,我看到了它的文档中,但由于某种原因误读没不认为它会工作 – Drown

+0

辉煌!这正是我需要的。谢谢。 –

+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

从文档:

注:传递给你的闭幕$输入参数将照亮的\ Support \流利的实例,可用于访问输入和文件。

查看文档here