链街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.

106 lines
3.2 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. $data = ['cover_img' => $coverImg];
  30. $res1 = GoodsModel::where('id',$goodsId)->update($data);
  31. }
  32. if($goodsId > 0 && !empty($bannerImg)){
  33. $banner = GoodsBannerModel::where('goods_id',$goodsId)->delete();
  34. foreach($bannerImg as $value){
  35. $banner = new GoodsBanners();
  36. $banner->goods_id = $goodsId;
  37. $banner->type = 1;
  38. $banner->created_at = time();
  39. $banner->updated_at = time();
  40. $banner->path = $value;
  41. $res2 = $banner->save();
  42. }
  43. }
  44. if((isset($res1) && $res1) || (isset($res2) && $res2)){
  45. return $this->success('修改成功','/goods?'.$this->getSearch($this->search));
  46. }
  47. return $this->error('未做任何修改');
  48. }
  49. /**
  50. * Build a form here.
  51. */
  52. public function form()
  53. {
  54. $id = $this->payload['id'] ?? 0;
  55. $goodName = $this->payload['name'] ?? '';
  56. $coverImg = $this->payload['cover_img'] ?? '';
  57. $this->search = $this->payload['search'] ?? '';
  58. // $goods = GoodsModel::select('name','cover_img')->find($id);
  59. // $goodName = empty($goods->name)?'':$goods->name;
  60. // $coverImg = empty($goods->cover_img) ? '':$goods->cover_img;
  61. $this->hidden('goods_id')->value($id);
  62. $this->display('name','商品名称')->value($goodName);
  63. $this->image('cover_img','封面图')->customFormat(function($cover_img) use($coverImg){
  64. return [$coverImg];
  65. })->autoUpload();
  66. $this->multipleImage('img_banner','轮播图')->customFormat(function($img_banner) use($id){
  67. if(!$id){
  68. return ;
  69. }
  70. $banners = GoodsBanners::where('goods_id',$id)->pluck('path')->toArray();
  71. return empty($banners) ? [] : $banners;
  72. })->autoUpload();
  73. $this->disableResetButton();
  74. }
  75. /**
  76. * The data of the form.
  77. *
  78. * @return array
  79. */
  80. public function default()
  81. {
  82. return [];
  83. }
  84. public function getSearch($data)
  85. {
  86. $return = '';
  87. if(is_array($data) && count($data) > 0){
  88. unset($data['_pjax']);
  89. foreach($data as $key => $value){
  90. $return .= $key.'='.$value.'&';
  91. }
  92. }
  93. return $return;
  94. }
  95. }