【问题标题】:Check if a form field exists when doing form validation? Laravel 5在进行表单验证时检查表单字段是否存在?拉拉维尔 5
【发布时间】:2015-10-02 20:25:16
【问题描述】:

我有一个表单,它有一些条件逻辑来显示或隐藏每个字段。我只想验证显示的字段。请参阅下面我的验证脚本中的字段列表,并想象我在视图中使用条件逻辑隐藏了“电话”表单字段 - 我仍然想验证其余字段,但如果“电话”验证仍然存在,则脚本失败并显示错误消息“需要电话号码”。

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

【问题讨论】:

    标签: forms validation laravel laravel-5


    【解决方案1】:

    以下验证规则应该可以完成这项工作:

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

    【讨论】:

    • 这是一种更简单的方法,我在文档中看到过,但由于某种原因误读认为它不起作用
    • 太棒了!这正是我所需要的。谢谢。
    • 顺便说一句,我的代表还不够高,否则我的投票会显示:) 再次感谢!
    【解决方案2】:

    您可以为此使用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

    来自文档:

    注意:传递给闭包的 $input 参数将是 Illuminate\Support\Fluent 的一个实例,可用于访问您的输入和文件。

    参见文档here

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-05-11
      • 2015-09-30
      • 2017-09-21
      • 2019-03-08
      • 2021-03-11
      • 2011-01-27
      相关资源
      最近更新 更多