SearchRequest.php 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. <?php
  2. namespace App\Http\Requests;
  3. use Illuminate\Foundation\Http\FormRequest;
  4. class SearchRequest extends FormRequest
  5. {
  6. /**
  7. * 检索是公开接口,不需要鉴权。
  8. */
  9. public function authorize(): bool
  10. {
  11. return true;
  12. }
  13. /**
  14. * 空 key 必须拦在查询之前。它不会报错,而是悄悄匹配到「空值」那一类数据——
  15. * wbw 检索里 real 为空串的行有四百多万条、覆盖 49 万个段落,标题检索里
  16. * like '%%' 命中全部三万多条。调用方拿到的是一个成功的响应和满屏结果,
  17. * 却与查询无关;这比直接报错难发现得多。
  18. *
  19. * regex 要求 key 里至少有一个字符既不是空白也不是分隔符:各接口有的按逗号
  20. * 切词、有的按分号切,只由分隔符组成的 key(`,,`、`;;`)在任何一边都是空的。
  21. *
  22. * @return array<string, array<int, string>>
  23. */
  24. public function rules(): array
  25. {
  26. return [
  27. 'key' => ['required', 'string', 'regex:/[^\s,;]/'],
  28. ];
  29. }
  30. /**
  31. * @return array<string, string>
  32. */
  33. public function messages(): array
  34. {
  35. return [
  36. 'key.regex' => 'The key field must contain at least one searchable word.',
  37. ];
  38. }
  39. }