BaseController.php 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152
  1. <?php
  2. declare (strict_types=1);
  3. namespace app;
  4. use think\App;
  5. use think\exception\ValidateException;
  6. use think\Validate;
  7. /**
  8. * 控制器基础类
  9. */
  10. abstract class BaseController
  11. {
  12. /**
  13. * Request实例
  14. * @var \think\Request
  15. */
  16. protected $request;
  17. /**
  18. * 应用实例
  19. * @var \think\App
  20. */
  21. protected $app;
  22. /**
  23. * 是否批量验证
  24. * @var bool
  25. */
  26. protected $batchValidate = false;
  27. /**
  28. * 控制器中间件
  29. * @var array
  30. */
  31. protected $middleware = [];
  32. /**
  33. * 构造方法
  34. * @access public
  35. * @param App $app 应用对象
  36. */
  37. public function __construct(App $app)
  38. {
  39. $this->app = $app;
  40. $this->request = $this->app->request;
  41. // 控制器初始化
  42. $this->initialize();
  43. }
  44. // 初始化
  45. protected function initialize()
  46. {
  47. }
  48. /**
  49. * 验证数据
  50. * @access protected
  51. * @param array $data 数据
  52. * @param string|array $validate 验证器名或者验证规则数组
  53. * @param array $message 提示信息
  54. * @param bool $batch 是否批量验证
  55. * @return array|string|true
  56. * @throws ValidateException
  57. */
  58. protected function validate(array $data, $validate, array $message = [], bool $batch = false)
  59. {
  60. if (is_array($validate)) {
  61. $v = new Validate();
  62. $v->rule($validate);
  63. } else {
  64. if (strpos($validate, '.')) {
  65. // 支持场景
  66. [$validate, $scene] = explode('.', $validate);
  67. }
  68. $class = false !== strpos($validate, '\\') ? $validate : $this->app->parseClass('validate', $validate);
  69. $v = new $class();
  70. if (!empty($scene)) {
  71. $v->scene($scene);
  72. }
  73. }
  74. $v->message($message);
  75. // 是否批量验证
  76. if ($batch || $this->batchValidate) {
  77. $v->batch(true);
  78. }
  79. return $v->failException(true)->check($data);
  80. }
  81. /**
  82. * 等于条件
  83. */
  84. protected function dealEqualInput($equal_array, $result = [])
  85. {
  86. foreach ($equal_array as $k => $v) {
  87. if (!is_numeric($k)) {
  88. $value = input($k);
  89. } else {
  90. $value = input($v);
  91. }
  92. if (!empty($value)) {
  93. $result[] = [$v, '=', $value];
  94. }
  95. }
  96. return $result;
  97. }
  98. /**
  99. * like条件
  100. */
  101. protected function dealLikeInput($like_array, $result = [])
  102. {
  103. foreach ($like_array as $k => $v) {
  104. if (!is_numeric($k)) {
  105. $value = input($k);
  106. } else {
  107. $value = input($v);
  108. }
  109. if (!empty($value)) {
  110. $result[] = [$v, 'like', "%{$value}%"];
  111. }
  112. }
  113. return $result;
  114. }
  115. /**
  116. * in条件
  117. */
  118. protected function dealInInput($in_array, $result = [])
  119. {
  120. foreach ($in_array as $k => $v) {
  121. if (!is_numeric($k)) {
  122. $value = input($k);
  123. } else {
  124. $value = input($v);
  125. }
  126. if (!empty($value)) {
  127. $result[] = [$v, 'in', $value];
  128. }
  129. }
  130. return $result;
  131. }
  132. }