Video.php 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. <?php
  2. namespace app\sys\validate;
  3. use app\model\Video as VideoModel;
  4. use think\Validate;
  5. class Video extends Validate
  6. {
  7. // 验证规则
  8. protected $rule = [
  9. 'title' => 'require|max:100',
  10. 'type' => 'require',
  11. 'label' => 'require',
  12. 'description' => 'require|max:200',
  13. // 'video_url' => 'require',
  14. // 'douyin_url' => 'requireCallback:douyin',
  15. 'video_url' => 'requireWithout:douyin_url',
  16. 'douyin_url' =>'requireWithout:video_url',
  17. 'link' => 'require|pregMatch'
  18. ];
  19. // 验证消息
  20. protected $message = [
  21. 'title.require' => '请输入标题',
  22. 'title.max' => '标题最大100个文字长度',
  23. 'type.require' => '请选择分类',
  24. 'label.require' => '请选择标签',
  25. 'description.require' => '请输入视频描述',
  26. 'description.max' => '描述最大200字长度',
  27. // 'video_url.require' => '请上传视频',
  28. // 'douyin_url.requireCallback' => '请上传视频地址进行抓取',
  29. 'video_url.requireWithout' => '请上传视频',
  30. 'douyin_url.requireWithout' => '请上传视频地址进行抓取',
  31. 'link.require' => '请输入抖音地址',
  32. 'link.pregMatch' => '抖音地址格式错误',
  33. ];
  34. // 验证场景
  35. protected $scene = [
  36. 'addSave' => ['title', 'type', 'video_url','douyin_url'],
  37. 'catch' => ['link'],
  38. ];
  39. // 视频验证
  40. public function video($value, $data)
  41. {
  42. //判断添加还是修改
  43. if(!empty($data['id']))
  44. {
  45. $video_url = VideoModel::where('id',$data['id'])->value('video_url');
  46. if(empty($video_url) && $_FILES['video_url']['size'] == 0) return true;
  47. }else{
  48. if ($_FILES['video_url']['size'] == 0) return true;
  49. }
  50. return false;
  51. }
  52. // 视频验证
  53. public function douyin($value, $data)
  54. {
  55. if (empty($data['douyin_url'])) return true;
  56. return false;
  57. }
  58. /*
  59. * 视频抓取检测是否存在
  60. */
  61. public function pregMatch($value)
  62. {
  63. preg_match('/https:\/\/[\w\/\.]*/', $value, $match);
  64. return empty($match) ? false : true;
  65. }
  66. }