📜  laravel 验证数组 - PHP (1)

📅  最后修改于: 2023-12-03 15:02:39.086000             🧑  作者: Mango

Laravel 验证数组 - PHP

在 Laravel 中,验证数组是一个非常常见的任务。在本文中,我们将介绍如何使用 Laravel 内置的验证器来验证数组,以及如何自定义有效规则。

检查输入是否为数组

在验证数组之前,您需要确保传递给验证器的输入是一个数组。您可以使用 Laravel 提供的 isArray 规则轻松检查输入是否为数组。下面是一个示例:

$validator = Validator::make($request->all(), [
    'items' => 'required|array'
]);

if ($validator->fails()) {
    // 处理错误
}

在上面的示例中,我们使用 requiredarray 规则来确保 items 是否为必需且为数组类型。如果验证失败,则 $validator->fails() 会返回 true

验证数组中的每个元素

在验证数组本身之后,您可能还需要验证数组中的每个元素。您可以使用 Laravel 提供的 each 规则轻松完成此操作。下面是一个示例:

$validator = Validator::make($request->all(), [
    'items' => 'required|array',
    'items.*.name' => 'required|string|min:3',
    'items.*.price' => 'required|numeric|min:0'
]);

if ($validator->fails()) {
    // 处理错误
}

在上面的示例中,我们使用 items.*.nameitems.*.price 规则分别对数组中的每个元素 nameprice 进行验证。如果验证失败,则 $validator->fails() 会返回 true

自定义验证规则

如果 Laravel 内置的验证规则不满足您的需求,您可以轻松自定义您自己的验证规则。您可以将自定义规则添加到 App\Providers\AppServiceProvider 类的 boot 方法中。下面是一个示例:

use Illuminate\Support\Facades\Validator;

Validator::extend('odd', function ($attribute, $value, $parameters, $validator) {
    return $value % 2 != 0;
});

在上面的示例中,我们定义了一个名为 odd 的自定义规则。该规则接受四个参数:

  1. $attribute:被验证的属性
  2. $value:被验证的值
  3. $parameters:传递给规则的其他参数
  4. $validator:当前的验证器实例

在规则的回调函数中,我们检查传递的值是否为奇数。如果是奇数,则返回 true,否则返回 false

使用自定义规则非常简单,只需将自定义规则的名称添加到验证器规则中即可。下面是一个示例:

$validator = Validator::make($request->all(), [
    'number' => 'required|integer|odd'
]);

if ($validator->fails()) {
    // 处理错误
}

在上面的示例中,我们使用自定义规则 odd 来验证通过 number 属性传递的奇数值。

结论

在 Laravel 中验证数组非常容易。您只需要确保输入是数组并使用 each 规则对数组的每个元素进行验证即可。如果 Laravel 内置的验证规则不满足您的需求,您可以轻松地添加自定义规则。