代码拉取完成,页面将自动刷新
在 Laravel 开发过程中,你是否会因为过多的参数校验而苦恼。laravel-super-validation 会帮助你实现场景参数校验、公共参数校验或者智能参数校验模式。从来轻松解决参数校验的苦恼。而且还可以达到很好的解耦效果。
** 重点 ** : 控制器里不需要写任何参数校验代码也能实现参数校验。
组件内置很多通用字段校验,默认规则非必填,但会按照既定的格式进行校验。
当客户端传递过来的时候,会根据预设的判定规则进行判断,没有传递时参数时不进行判定。
例如 : id 校验规则必须是整数。默认情况下客户端不传递参数则不校验。当客户端传递 id 字段的时候则按照整数的规则校验。
email 同理当客户端传递 email 字段便会按照邮箱的格式校验,否则不校验。
这样一来在控制器层面不需要写过多的参数校验。
组件支持场景校验,当用户用邮箱登录的时候,场景中定义邮箱字段为必填,与内置的校验规则合并一起校验。
场景设定的规则是控制器的命名空间类名加方法名。
例如 : App\Http\Controllers\ValidationController@index
自动校验 App\Http\Controllers\ValidationController.php 文件下的 index 方法
composer require xingfupeng/laravel-super-validator
php artisan vendor:publish --tag=config --force
// config/app.php
'providers' => [
...
Xingfupeng\LaravelSuperValidator\Providers\LaravelSuperValidatorProvider::class,
],
// app/Exceptions/Handler.php
public function register()
{
$this->reportable(function (LarvelSuperValidatorException $e) {
return response($e->getMessage());
});
...
}
// config/laravel-super-validator-fields.php
<?php
return [
'id' => [
'rules' => 'integer',
'messages' => [
'required' => '请输入ID',
'integer' => 'ID必须是数字',
]
],
'page' => [
'rules' => 'integer',
'messages' => [
'required' => '请输入分页',
'integer' => '页数必须是数字',
]
],
];
// config/laravel-super-validator-scenes.php
<?php
return [
'App\Http\Controllers\ValidationController@index' => [
'id' => [
'rules' => 'required|min:3|max:6',
'messages' => [
'required' => 'ID不能为空',
'min' => 'id不能少于:min个字符',
'max' => 'id不能多于:max个字符'
]
],
'page' => [
'rules' => 'required',
]
],
];
return [
'id' => [ // 字段名称
'rules' => 'integer', // 字段规则
'messages' => [ // 字段校验信息
/**
* 这里需要注意的
* 每一个字段都会有一个必填信息,
* 当场景校验添加 required 校验规则,
* 场景中设置了 message 会覆盖这里,
* 否则默认就是显示这里的信息提示。
*/
'required' => '请输入ID',
'integer' => 'ID必须是数字',
]
],
'page' => [
'rules' => 'integer',
'messages' => [
'required' => '请输入分页',
'integer' => '页数必须是数字',
]
],
];
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。