在进行表单验证时检查表单字段是否存在? Laravel 5

时间:2015-10-02 20:25:16

标签: forms validation laravel laravel-5

我有一个表单,其中包含一些显示或隐藏每个字段的条件逻辑。我只想验证显示的字段。请参阅下面的验证脚本中的字段列表,并想象我隐藏了电话"在视图中使用条件逻辑的表单字段 - 我仍然想要验证其余字段,但是如果" 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());
        }

2 个答案:

答案 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(),