【问题标题】:Using excludes_unless validation rule with arrays in Laravel在 Laravel 中对数组使用 excludes_unless 验证规则
【发布时间】:2021-12-03 17:16:44
【问题描述】:

Laravel 的 exclude_unless,field,value 规则在 field 是一个值数组且 value 包含在 field 数组中的情况下似乎不起作用。

鉴于以下情况:

$validator = Validator::make($request->all(), [
    'some_array' => 'array',
    'some_field' => 'exclude_unless:some_array,foo|alpha_num',
]);

如果some_array 等于['foo'],验证器将无法排除some_field。这似乎是因为excludes_unless 下面的比较是in_array(['foo'], ['foo']),它返回false

是否有可能实现与exclude_unless 相同的逻辑——如果另一个字段等于某个值,则将一个字段排除在验证之外,但是与之比较的字段是一个数组,我们正在检查该值是否在该数组中数组?

【问题讨论】:

  • 你使用的是什么版本的 Laravel?
  • @Rwd 我正在使用 7,所以很遗憾无法访问 8 个细节!

标签: php laravel laravel-7


【解决方案1】:

只要你使用的是 Laravel 8.55 或更高版本,你就可以使用Rule::when()

use Illuminate\Validation\Rule;

$someArray = $request->input('some_array', []);

$validator = Validator::make($request->all(), [
    'some_array' => 'array',
    'some_field' => Rule::when(!empty(array_intersect(['foo'], $someArray)), ['exclude']),
]);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-07-09
    • 1970-01-01
    • 2018-10-25
    • 2018-04-24
    • 2019-07-25
    • 2017-12-01
    • 2014-04-22
    • 2015-11-20
    相关资源
    最近更新 更多