unicframework/validator

Validator 是一个用于 PHP 的服务器端数据验证库。我们可以验证 HTML 表单数据、对象、数组以及 JSON 等。

v1.5.2 2021-05-02 12:38 UTC

This package is auto-updated.

Last update: 2024-09-19 20:45:23 UTC


README

Validator Logo

Validator 是一个用于 PHP 的服务器端数据验证库。它可以验证 HTML 表单数据、对象、数组以及 JSON 等。Validator 使得数据验证变得简单。

安装

  • 如果没有安装,请安装 composer
composer require unicframework/validator

设置验证规则

我们可以使用 rules 方法来设置数据验证规则。

use Validator\Validator;

// Set data validation rules
$validator = Validator::make([
  'first_name' => [
    'required' => true,
    'not_null' => true,
    'string' => true
  ],
  'last_name' => [
    'required' => true,
    'not_null' => true,
    'string' => true
  ],
  'email' => [
    'required' => true,
    'not_null' => true,
    'email' => true
  ],
  'gender' => [
    'required' => true,
    'not_null' => true,
    'in' => ['male', 'female']
  ],
  'password' => [
    'required' => true,
    'not_null' => true,
    'minlength' => 6
  ]
]);

我们还可以使用简写方法来设置数据验证规则,这样非常简单且简洁。

use Validator\Validator;

// Set data validation rules
$validator = Validator::make([
  'first_name,last_name' => 'required|not_null|string',
  'email' => 'required|not_null|email',
  'gender' => 'required|not_null|in:male,female',
  'password' => 'required|not_null|minlength:6'
]);

设置错误信息

我们可以使用 messages 方法来设置错误信息。如果我们没有设置错误信息,那么验证器会自动为您生成错误信息。

use Validator\Validator;

// Set validation error messages
$validator = Validator::make([
  'first_name' => [
    'required' => true,
    'not_null' => true,
    'string' => true
  ],
  'last_name' => [
    'required' => true,
    'not_null' => true,
    'string' => true
  ],
  'email' => [
    'required' => true,
    'not_null' => true,
    'email' => true
  ],
  'gender' => [
    'required' => true,
    'not_null' => true,
    'in' => ['male', 'female']
  ],
  'password' => [
    'required' => true,
    'not_null' => true,
    'minlength' => 6
  ]
],
[
  'first_name' => [
    'required' => 'First name is required',
    'not_null' => 'First name can not be null',
    'string' => 'First name should be in string'
  ],
  'last_name' => [
    'required' => 'Last name is required',
    'not_null' => 'Last name can not be null',
    'string' => 'Last name should be in string'
  ],
  'email' => [
    'required' => 'Email is required',
    'not_null' => 'Email can not be null',
    'email' => 'Please enter valid email address'
  ],
  'gender' => [
    'required' => 'Gender is required',
    'not_null' => 'Gender can not be null',
    'in' => 'Please select valid gender'
  ],
  'password' => [
    'required' => 'Password is required',
    'not_null' => 'Password can not be null',
    'minlength' => 'Password length should be minimum 5 characters'
  ]
]);

我们还可以使用简写方法来设置数据验证规则,这样非常简单且简洁。

use Validator\Validator;

// Set validation error messages
$validator = Validator::make([
  'first_name,last_name' => 'required|not_null|string',
  'email' => 'required|not_null|email',
  'gender' => 'required|not_null|in:male,female',
  'password' => 'required|not_null|minlength:6'
],
[
  'first_name,last_name' => 'required:Name is required|not_null:Name can not be null|string:Name should be in string',
  'email' => 'required:Email is required|not_null:Email can not be null|email:Please enter valid email address',
  'gender' => 'required:Gender is required|not_null:Gender can not be null|in:Please select valid gender',
  'password' => 'required: Password is required|not_null:Password can not be null|minlength:Password length should be minimum 5 characters',
]);

验证数据

使用 validator,我们可以验证 HTML 表单数据、数组、对象和 JSON 数据。Validator 将根据规则验证数据。如果所有数据都有效,则返回 true,否则返回 false

验证单个数据

use Validator\Validator;

$validator = Validator::make([
  'name' => [
    'required' => true,
    'not_null' => true,
    'string' => true
  ],
  'gender' => [
    'required' => true,
    'not_null' => true,
    'string' => true,
    'lowercase' => true,
    'in' => ['male', 'female', 'other']
  ],
  'contact.email' => [
    'required' => true,
    'not_null' => true,
    'email' => true,
  ]
],
[
  'contact.email' => [
    'required' => 'Please enter email address.',
    'email' => 'Please enter valid email address.'
  ]
]);

// Data for validation
// We can validate any data like arrays, objects, and json etc.
$data = [
  'name' => 'abc xyz',
  'gender' => 'male',
  'contact' => [
    'email' => 'abc@gmail.com'
  ]
];

// Validate data
if($validator->validate($data)) {
  //Ok data is valid
} else {
  // Display validation errors
  print_r($validator->errors();
}

验证多组数据

use Validator\Validator;

$validator = Validator::make([
  'name' => [
    'required' => true,
    'not_null' => true,
    'string' => true
  ],
  'gender' => [
    'required' => true,
    'not_null' => true,
    'string' => true,
    'lowercase' => true,
    'in' => ['male', 'female', 'other']
  ],
  'contact.email' => [
    'required' => true,
    'not_null' => true,
    'email' => true,
  ]
],
[
  'contact.email' => [
    'required' => 'Please enter email address.',
    'email' => 'Please enter valid email address.'
  ]
]);

// Data for validation
// We can validate any data like arrays, objects, and json etc.
$data = [
  [
    'name' => 'abc xyz',
    'gender' => 'male',
    'contact' => [
      'email' => 'xyz@gmail.com'
    ]
  ],
  [
    'name' => 'xyz abc',
    'gender' => 'male',
    'contact' => [
      'email' => 'xyz@gmail.com'
    ]
  ]
];

// Validate multiple sets of data
if($validator->validate($data, true)) {
  // Ok data is valid
} else {
  // Display validation errors
  print_r($validator->errors());
}

获取无效错误

我们可以使用 errors 方法来获取错误。该方法返回一个错误数组。

// Get all errors
$errors = $validator->errors();

获取有效数据

我们可以使用 getValidData 方法获取有效的解析数据。该方法返回一个有效数据的数组。

// Get all valid data
$errors = $validator->getValidData();

获取无效数据

我们可以使用 getInvalidData 方法获取无效的解析数据。该方法返回一个无效数据的数组。

// Get all invalid data
$errors = $validator->getInvalidData();

设置验证规则

Validator 有许多预定义的验证规则。

设置自定义规则

我们可以为数据验证设置预定义/自定义规则。自定义规则接受一个带有单个参数的回调函数。如果自定义规则返回 true,则表示数据有效;如果返回 false,则表示数据无效。

// Set validation rules
$validator = Validator::make([
  'email' => [
    'required' => true,
    'not_null' => true,
    'email' => true,
    // Set your own custom rules
    'blocked' => function($value) {
      if($value == 'abc@gmail.com') {
        // Email abc@gmail.com is blocked
        return false;
      } else {
        return true;
      }
    },
    // Set your own custom rules
    'available' => is_available($value),
  ]
],
[
  // Set error messages for custom rules
  'email' => [
    'blocked' => 'this email address is blocked',
    'available' => 'this email address is already registered',
  ]
]);

许可证

MIT 许可证