hush / validate
验证器
v1.0.7
2025-12-09 08:07 UTC
Requires
- php: ^8.0
- topthink/framework: ^8.0
README
解决问题
- 解决重复书写参数问题,在接口接收一次,在验证器又要重写一遍
- 解决唯一性字段验证问题,添加的时候需要验证某个字段唯一性,编辑的时候需要验证某个字段唯一性(需要排除自身)
- 解决单条数据是否存在的问题
使用方法
- 安装插件composer require hush/validate
composer require hush/validate - 生成验证器
php think validate User - 在控制器中使用
$params = (new \app\validate\Admin())->readScene(request()->action()); 在验证器中定义场景
checkUnique--第一个字段是模型名称,第二个字段是需要验证唯一性的字段,第三个字段是排除自身的主键字段(就是你传进来的主键字段) protected $rule = [ 'username' => 'max:20|checkUnique:Admin,username,admin_id', 'admin_id' => 'checkEven:Admin', 'password' => 'max:32', 'nickname' => 'max:50', 'status' => 'in:0,1', 'role_id' => 'number|checkEven:Role', ]; protected $message = [ 'username.max' => '用户名不能超过20个字符', 'password.max' => '密码不能超过32个字符', 'nickname.max' => '昵称不能超过50个字符', 'status.in' => '状态只能是 0 或 1', 'role_id.number' => '角色ID必须为数字', ]; scene里面写什么就接收什么,不写的全部不接受,传了就验证不传就不验证 protected $scene = [ 'addAdmin' => ['username', 'role_ids', 'password', 'email', 'mobile'], ]; must里面只写必传字段,且必定验证 protected $must = [ 'addAdmin' => ['username', 'password', 'email', 'mobile'], ]; protected $field = [ 'username' => '用户名', 'password' => '密码', 'nickname' => '昵称', 'role_id' => '角色', 'Admin' => '管理员',//大写的就是模型名称,不是表字段 ]; // 自定义验证规则,检查单条数据是否存在 public function checkEven(mixed $value, mixed $rule, array $data = []): string|bool { return parent::checkExist($value, $rule, $data); }