【问题标题】:Dynamic validation rules based on input in Larave基于 Laravel 中输入的动态验证规则
【发布时间】:2021-06-24 06:00:42
【问题描述】:

我想知道 Laravel 请求验证中是否有一些规则类似于 required_if/required_unless 但检查值是否存在于表中。

例如,我有一个包含两个字段的表单 - 姓氏和电话号码。提交表单后,我需要将这些数据保存到表格中。但是,我需要检查电话号码是否出现在桌子上。如果电话号码已经在表格中,我需要显示错误,但应该可以保存数据。类似unique_unless:ignore_duplicates:table,phone_number

我看到这样的流程

  1. 填写表格并提交
  2. 请求验证并显示电话号码已被占用的消息
  3. 设置一个复选框,我想忽略此类错误并再次提交数据
  4. 请求再次验证,但这次唯一性规则被跳过
  5. 如果没有其他错误发生,请保存数据

【问题讨论】:

    标签: laravel forms validation


    【解决方案1】:

    我不认为你可以在这里使用任何开箱即用的东西。但是,如果我正确地解决了您的问题,可以使用closure-based rule 来解决,例如:

    $rules = [
        ...,
        'phone_number' => [
            ...,
            function ($attribute, $value, $fail) use ($request) {
                if (! $request->input('override')) {
                    if (YourModel::where('phone_number', $value)->first()) {
                        $fail("YourModel with this phone number already exists.");
                    }
                }
            }
        ]
    ];
    

    【讨论】:

    • 谢谢!看起来这是唯一的解决方案。
    猜你喜欢
    • 2018-01-12
    • 2020-03-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-09
    • 1970-01-01
    • 2021-08-13
    • 1970-01-01
    相关资源
    最近更新 更多