链街Dcat后台
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

111 lines
3.3 KiB

  1. <?php
  2. namespace App\Admin\Forms\v3;
  3. use App\Models\v3\GoodsBanners;
  4. use Dcat\Admin\Widgets\Form;
  5. use Symfony\Component\HttpFoundation\Response;
  6. use App\Models\v3\Goods as GoodsModel;
  7. use App\Models\v3\GoodsBanners as GoodsBannerModel;
  8. use Dcat\Admin\Contracts\LazyRenderable;
  9. use Dcat\Admin\Traits\LazyWidget;
  10. use Illuminate\Support\Facades\DB;
  11. class GoodsImageForm extends Form implements LazyRenderable
  12. {
  13. use LazyWidget;
  14. protected $search = '';
  15. /**
  16. * Handle the form request.
  17. *
  18. * @param array $input
  19. *
  20. * @return Response
  21. */
  22. public function handle(array $input)
  23. {
  24. // 获取外部传递参数
  25. $goodsId = $input['goods_id'];
  26. $coverImg= $input['cover_img'];
  27. $bannerImg= $input['img_banner'];
  28. if($goodsId > 0 && !empty($coverImg)){
  29. $lastLen = strrpos($coverImg,',');
  30. if($lastLen != false){
  31. $coverImg = substr($coverImg,$lastLen+1);
  32. }
  33. if(strlen($coverImg) > 200){
  34. return $this->error('上传图片名称过长');
  35. }
  36. $data = ['cover_img' => $coverImg];
  37. $res1 = GoodsModel::where('id',$goodsId)->update($data);
  38. }
  39. if($goodsId > 0 && !empty($bannerImg)){
  40. $banner = GoodsBannerModel::where('goods_id',$goodsId)->delete();
  41. foreach($bannerImg as $value){
  42. $banner = new GoodsBanners();
  43. $banner->goods_id = $goodsId;
  44. $banner->type = 1;
  45. $banner->created_at = time();
  46. $banner->updated_at = time();
  47. $banner->path = $value;
  48. $res2 = $banner->save();
  49. }
  50. }
  51. if((isset($res1) && $res1) || (isset($res2) && $res2)){
  52. return $this->success('修改成功','/goods?'.$this->getSearch($this->search));
  53. }
  54. return $this->error('未做任何修改');
  55. }
  56. /**
  57. * Build a form here.
  58. */
  59. public function form()
  60. {
  61. $id = $this->payload['id'] ?? 0;
  62. $goodName = $this->payload['name'] ?? '';
  63. $coverImg = $this->payload['cover_img'] ?? '';
  64. $this->search = $this->payload['search'] ?? '';
  65. $this->hidden('goods_id')->value($id);
  66. $this->display('name','商品名称')->value($goodName);
  67. $this->image('cover_img','封面图')->uniqueName()->retainable()->customFormat(function() use($coverImg){
  68. return [$coverImg];
  69. })->autoUpload();
  70. $this->multipleImage('img_banner','轮播图')->uniqueName()->customFormat(function() use($id){
  71. if(!$id){
  72. return ;
  73. }
  74. $banners = GoodsBanners::where('goods_id',$id)->pluck('path')->toArray();
  75. return empty($banners) ? [] : $banners;
  76. })->autoUpload();
  77. $this->disableResetButton();
  78. }
  79. /**
  80. * The data of the form.
  81. *
  82. * @return array
  83. */
  84. public function default()
  85. {
  86. return [];
  87. }
  88. public function getSearch($data)
  89. {
  90. $return = '';
  91. if(is_array($data) && count($data) > 0){
  92. unset($data['_pjax']);
  93. foreach($data as $key => $value){
  94. $return .= $key.'='.$value.'&';
  95. }
  96. }
  97. return $return;
  98. }
  99. }