ProductCategoryController.php 2.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. <?php
  2. namespace App\Admin\Controllers;
  3. use App\Models\Product;
  4. use App\Models\ProductCategory;
  5. use Dcat\Admin\Form;
  6. use Dcat\Admin\Grid;
  7. use Dcat\Admin\Show;
  8. use Dcat\Admin\Http\Controllers\AdminController;
  9. class ProductCategoryController extends AdminController
  10. {
  11. public function destroy($id)
  12. {
  13. $childIds = ProductCategory::where('pid',$id)->get()->pluck('id');
  14. $childIds[]= $id;
  15. $hasEpisode = Product::whereIn('cate_id',$childIds)->count();
  16. if($hasEpisode){
  17. $form = new Form();
  18. $response = $form->response();
  19. return $response->error('当前分类或子分类存在产品,前先删除产品后再删除分类');
  20. }
  21. return $this->form()->destroy($id);
  22. }
  23. /**
  24. * Make a grid builder.
  25. *
  26. * @return Grid
  27. */
  28. protected function grid()
  29. {
  30. return Grid::make(new ProductCategory(), function (Grid $grid) {
  31. $grid->model()->orderByDesc('sort');
  32. $grid->column('id')->sortable();
  33. $grid->column('name');
  34. $grid->column('cover_img')->image('',100);
  35. $grid->column('level')->using(config('global.cat_level'));
  36. $grid->column('is_opened')->switch();
  37. $grid->column('sort')->editable();
  38. $grid->column('created_at');
  39. $grid->disableViewButton();
  40. });
  41. }
  42. /**
  43. * Make a form builder.
  44. *
  45. * @return Form
  46. */
  47. protected function form()
  48. {
  49. return Form::make(new ProductCategory(), function (Form $form) {
  50. $form->display('id');
  51. $form->radio('level')
  52. ->when(2, function (Form $form){
  53. $options = ProductCategory::select(['id','name'])
  54. ->where('level',1)
  55. ->get()
  56. ->pluck('name', 'id');
  57. $form->select('pid')->options($options);
  58. })
  59. ->options(config('global.cat_level'))
  60. ->default(1);
  61. $form->text('name')->required();
  62. $form->image('cover_img','封面图(宽高比 1.75:1)')->saveFullUrl()
  63. ->uniqueName()->autoUpload()
  64. ->autoSave(false)
  65. ->removable(false)
  66. ->width(4)->required();
  67. $form->radio('is_opened')
  68. ->options(config('global.bool_status'))
  69. ->default(1);
  70. $form->number('sort');
  71. $form->disableViewButton();
  72. $form->disableDeleteButton();
  73. $form->disableListButton();
  74. $form->disableEditingCheck();
  75. $form->disableViewCheck();
  76. $form->disableCreatingCheck();
  77. });
  78. }
  79. }