【问题标题】:Check if values in array are in another array using Laravel Validation使用 Laravel 验证检查数组中的值是否在另一个数组中
【发布时间】:2021-01-28 04:12:44
【问题描述】:

我想检查我的输入(一个数组)的所有值是否都在另一个数组中。例如:

$my_arr = ['item1', 'item2', 'item3', 'item4'];

Validator::make($request, [
            'item' => [ /* what do i put here??? */ ],
        ]);

我不认为规则in 有效,因为它需要单个值作为输入,而不是数组。 in_array 也不起作用。我尝试创建自定义规则或闭包,但这些都不允许我传入参数(我要检查的数组)。特别是因为我希望多个数组具有相同的功能,对于不同的输入,有一个适用于我给它的任何数组的通用规则会很好。

如果这不可能,我想我需要为每个特定数组创建一个规则并使用!array_diff($search_this, $all),正如this answer 所说。有没有替代方案?

【问题讨论】:

    标签: php arrays laravel laravel-validation


    【解决方案1】:

    in 确实不接受数组而是字符串。因此,您可以将数组转换为字符串。

    $my_arr = ['item1', 'item2', 'item3', 'item4'];
    
    Validator::make($request, [
       'item' => [ 'in:' . implode(',', $my_arr) ],
    ]);
    

    implode

    另一个更好的解决方案可能是使用Illuminate\Validation\Rulein 接受数组的方法:

    'item' => [ Rule::in($my_arr) ],
    

    Laravel Validation - Rule::in

    【讨论】:

    • 等等,即使输入是数组,验证规则也有效?只是检查,因为 Laravel 文档中没有指定。
    猜你喜欢
    • 1970-01-01
    • 2020-09-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-24
    • 2020-06-09
    • 2017-08-21
    相关资源
    最近更新 更多