BaseValidator.php 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. <?php
  2. namespace App\Http\Validator;
  3. use Illuminate\Support\Facades\Validator;
  4. class BaseValidator extends Validator
  5. {
  6. // 当前模型所有验证规则
  7. public static $rules = [];
  8. // 当前模型所有错误提示信息
  9. public static $msgs = [];
  10. // 当前模型所有验证字段
  11. public static $fields = [];
  12. // 当前模型所有验证场景
  13. public static $scenes = [];
  14. public function __construct($rules=[], $msgs=[], $fields=[], $scens=[])
  15. {
  16. self::$rules = $rules;
  17. self::$msgs = $msgs;
  18. self::$fields = $fields;
  19. self::$scenes = $scens;
  20. }
  21. /**
  22. * 验证表单或请求参数
  23. * @param $request 请求数据
  24. * @param string $scene 场景,为空则全部验证
  25. * @return int|mixed
  26. */
  27. public function checkParams($request, $scene=''){
  28. // 存在验证场景
  29. if($scene){
  30. $sceneFields = isset(self::$scenes[$scene])? self::$scenes[$scene] : [];
  31. if(empty($sceneFields)){
  32. return 1008;
  33. }
  34. foreach (self::$rules as $key => $rule){
  35. if(!in_array($key, $sceneFields)){
  36. unset(self::$rules[$key]);
  37. unset(self::$fields[$key]);
  38. }
  39. }
  40. }
  41. // 验证数据
  42. $validator = Validator::make($request, self::$rules, self::$msgs, self::$fields);
  43. if ($validator->fails()) {
  44. return getValidatorError($validator);
  45. }
  46. return $request;
  47. }
  48. }