Laravel 如果填写了一个字段,则不需要其他字段

时间:2021-02-27 07:44:41

标签: laravel validation laravel-8

我有三个可以为空的字段(优惠券会员优惠),它们需要从请求中填写。我想验证/限制用户,以便他们只能填写这些字段之一。 由于这些字段不是必需的,我不能使用 required:* 验证器来处理这个问题。 我知道这可以在前端处理,但我也想在后端处理。

感谢您对此的任何帮助/见解。

2 个答案:

答案 0 :(得分:0)

您可以使用 Laravel 验证中的 required_without_all function

$request->validate([
    'coupon'     => ['nullable', 'required_without_all:membership,offer'],
    'membership' => ['nullable', 'required_without_all:coupon,offer'],
    'offer'      => ['nullable', 'required_without_all:membership,coupon'],
]);

答案 1 :(得分:0)

我会采用将选项作为同一字段的三个可能值的方法。您可以使用表单上的选择或单选按钮组来填写单个字段。这样用户只能输入三个可能的值之一。

例如,如果我们调用字段 type,您的验证将检查为 type 提供的值是否是三个选项之一。

$request->validate([
    'type' => [
          'nullable',
          Rule::in(['coupon', 'membership', 'offer']),
    ],
]);

编辑: 添加可为空的验证,允许该字段根本没有值

相关问题