# laravel-super-validator
**Repository Path**: xingfupeng/laravel-super-validator
## Basic Information
- **Project Name**: laravel-super-validator
- **Description**: 在 Laravel 开发过程中,你是否会因为过多的参数校验而苦恼。laravel-super-validation 会帮助你实现场景参数校验、公共参数校验或者智能参数校验模式。从来轻松解决参数校验的苦恼。而且还可以达到很好的解耦效果。
- **Primary Language**: PHP
- **License**: MIT
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 1
- **Forks**: 0
- **Created**: 2022-04-07
- **Last Updated**: 2022-06-28
## Categories & Tags
**Categories**: Uncategorized
**Tags**: validation, Laravel, validator
## README
# laravel-super-validator
#### 组件介绍
在 Laravel 开发过程中,你是否会因为过多的参数校验而苦恼。laravel-super-validation 会帮助你实现场景参数校验、公共参数校验或者智能参数校验模式。从来轻松解决参数校验的苦恼。而且还可以达到很好的解耦效果。
**\*\* 重点 \*\* : 控制器里不需要写任何参数校验代码也能实现参数校验。**
#### 校验思想
组件内置很多通用字段校验,默认规则非必填,但会按照既定的格式进行校验。
当客户端传递过来的时候,会根据预设的判定规则进行判断,没有传递时参数时不进行判定。
例如 : id 校验规则必须是整数。默认情况下客户端不传递参数则不校验。当客户端传递 id 字段的时候则按照整数的规则校验。
email 同理当客户端传递 email 字段便会按照邮箱的格式校验,否则不校验。
这样一来在控制器层面不需要写过多的参数校验。
组件支持场景校验,当用户用邮箱登录的时候,场景中定义邮箱字段为必填,与内置的校验规则合并一起校验。
场景设定的规则是控制器的命名空间类名加方法名。
例如 : App\Http\Controllers\ValidationController@index
自动校验 App\Http\Controllers\ValidationController.php 文件下的 index 方法
#### 安装教程
1. 安装
```sh
composer require xingfupeng/laravel-super-validator
```
2. 发布配置文件
```sh
php artisan vendor:publish --tag=config --force
```
3. 添加服务器提供者配置
```php
// config/app.php
'providers' => [
...
Xingfupeng\LaravelSuperValidator\Providers\LaravelSuperValidatorProvider::class,
],
```
#### 使用说明
1. 参数配置
config/laravel_super_validator.php 的配置项可以覆盖 laravel_super_validator中的配置项
config/laravel_super_validator_fields.php 通用检验配置
2. 自定义校验异常操作
捕获异常信息后可自定义数据格式返回给客户端,特别使用于接口开发。
```php
// app/Exceptions/Handler.php
public function register()
{
$this->reportable(function (LarvelSuperValidatorException $e) {
return response($e->getMessage());
});
...
}
```
3. 通用配置校验
```php
// config/laravel-super-validator-fields.php
[
'rules' => 'integer',
'messages' => [
'required' => '请输入ID',
'integer' => 'ID必须是数字',
]
],
'page' => [
'rules' => 'integer',
'messages' => [
'required' => '请输入分页',
'integer' => '页数必须是数字',
]
],
];
```
4. 场景校验配置
```php
// config/laravel-super-validator-scenes.php
[
'id' => [
'rules' => 'required|min:3|max:6',
'messages' => [
'required' => 'ID不能为空',
'min' => 'id不能少于:min个字符',
'max' => 'id不能多于:max个字符'
]
],
'page' => [
'rules' => 'required',
]
],
];
```
#### 内置校验
```php
return [
'id' => [ // 字段名称
'rules' => 'integer', // 字段规则
'messages' => [ // 字段校验信息
/**
* 这里需要注意的
* 每一个字段都会有一个必填信息,
* 当场景校验添加 required 校验规则,
* 场景中设置了 message 会覆盖这里,
* 否则默认就是显示这里的信息提示。
*/
'required' => '请输入ID',
'integer' => 'ID必须是数字',
]
],
'page' => [
'rules' => 'integer',
'messages' => [
'required' => '请输入分页',
'integer' => '页数必须是数字',
]
],
];
```