ProductSpecController.php 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. <?php
  2. namespace App\Admin\Controllers;
  3. use App\Models\ProductSpec;
  4. use App\Models\ProductSpecGroup;
  5. use Dcat\Admin\Form;
  6. use Dcat\Admin\Grid;
  7. use Dcat\Admin\Layout\Content;
  8. use Dcat\Admin\Show;
  9. use Dcat\Admin\Http\Controllers\AdminController;
  10. class ProductSpecController extends AdminController
  11. {
  12. protected $product_id;
  13. public function __construct()
  14. {
  15. $route = \request()->route();
  16. $this->product_id = $route->parameters['id'];
  17. }
  18. /**
  19. * Make a grid builder.
  20. *
  21. * @return Grid
  22. */
  23. protected function grid()
  24. {
  25. return Grid::make(ProductSpec::with('group.product'), function (Grid $grid) {
  26. $grid->model()->orderByDesc('group_id')->orderByDesc('sort');
  27. $grid->column('id')->sortable();
  28. $grid->column('product','产品')->display(function (){
  29. return $this->group->product->name;
  30. })->label('info');
  31. $grid->column('group_id')->display(function (){
  32. return $this->group->name;
  33. })->label('success');
  34. $grid->column('name')->label('primary');
  35. $grid->column('sale_price')->editable();
  36. $grid->column('is_opened')->switch();
  37. $grid->column('sort')->editable();
  38. $grid->column('created_at');
  39. $url = admin_url('/product/'.$this->product_id.'/specGroup');
  40. $grid->tools('<a href="'.$url.'" class="btn btn-primary btn-outline" style="position: absolute;right: 118px;">
  41. <i class="fa fa-align-justify"></i> 规格组管理</a>');
  42. });
  43. }
  44. /**
  45. * Make a show builder.
  46. *
  47. * @param mixed $id
  48. *
  49. * @return Show
  50. */
  51. protected function detail($id)
  52. {
  53. return Show::make($id, new ProductSpec(), function (Show $show) {
  54. $show->field('id');
  55. $show->field('group_id');
  56. $show->field('name');
  57. $show->field('cover_img');
  58. $show->field('origin_price');
  59. $show->field('sale_price');
  60. $show->field('created_at');
  61. $show->field('updated_at');
  62. });
  63. }
  64. /**
  65. * Make a form builder.
  66. *
  67. * @return Form
  68. */
  69. protected function form()
  70. {
  71. return Form::make(new ProductSpec(), function (Form $form) {
  72. $form->display('id');
  73. $cates = ProductSpecGroup::select(['id','name'])->where('is_opened',1)->get()->toArray();
  74. $form->radio('group_id')
  75. ->options(array_column($cates,'name','id'))
  76. ->required();
  77. $form->text('name')->required();
  78. $form->decimal('sale_price')->required();
  79. $form->radio('is_opened')->options(config('global.bool_status'))->default(1);
  80. $form->number('sort');
  81. $form->disableViewButton();
  82. $form->disableDeleteButton();
  83. $form->disableListButton();
  84. $form->disableEditingCheck();
  85. $form->disableViewCheck();
  86. $form->disableCreatingCheck();
  87. });
  88. }
  89. }