DistAppearanceVariableController.php 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160
  1. <?php
  2. namespace App\Admin\Controllers;
  3. use App\Admin\Renderable\DistDistributorTable;
  4. use App\Admin\Repositories\DistAppearance;
  5. use App\Admin\Repositories\DistAppearanceVariable;
  6. use Dcat\Admin\Form;
  7. use Dcat\Admin\Grid;
  8. use Dcat\Admin\Show;
  9. use Dcat\Admin\Http\Controllers\AdminController;
  10. use Dcat\Admin\Layout\Content;
  11. use Dcat\Admin\Admin;
  12. use Dcat\Admin\Widgets\Dropdown;
  13. class DistAppearanceVariableController extends AdminController
  14. {
  15. public function index(Content $content)
  16. {
  17. return $content->full()->body($this->grid());
  18. }
  19. /**
  20. * Make a grid builder.
  21. *
  22. * @return Grid
  23. */
  24. protected function grid()
  25. {
  26. $templateId = isset($_GET['templateId']) ? intval($_GET['templateId']) : 0;
  27. $appearanceId = isset($_GET['appearanceId']) ? intval($_GET['appearanceId']) : 0;
  28. $distId = isset($_GET['distId']) ? intval($_GET['distId']) : 0;
  29. if (empty($templateId) || empty($appearanceId)) {
  30. die(' templateId or appearanceId is empty');
  31. }
  32. return Grid::make(DistAppearanceVariable::with(['distributor','appearance']), function (Grid $grid) use ($templateId, $appearanceId, $distId) {
  33. $grid->column('id')->sortable();
  34. $grid->column('distributor.company_name','Distributor Name')->display(function ($company_name) {
  35. if (empty($company_name)) {
  36. return 'Raw Template Variables';
  37. }
  38. return $company_name;
  39. })->help('If the distributor is empty, then use the Raw Template Variables.');
  40. $grid->column('appearance.title','Appearance Title');
  41. $grid->column('template_ids','site variable')->display(function ($templateIds) {
  42. if ($templateIds == 0) {
  43. return 'Yes';
  44. } else {
  45. return 'No';
  46. }
  47. });
  48. $grid->column('variable_name');
  49. $grid->column('variable_type')->using(['1' => 'text', '2' => 'textarea', '3' => 'json']);
  50. //搜索
  51. $grid->quickSearch(['variable_name']);
  52. //工具栏
  53. $grid->disableViewButton();
  54. $grid->showQuickEditButton();
  55. $grid->enableDialogCreate();
  56. $grid->disableEditButton();
  57. $addUrl = '?templateId='. $templateId . '&appearanceId='. $appearanceId . '&distId='. $distId;
  58. //排序
  59. $grid->model()->where('appearance_id', $appearanceId)->where('dist_id', $distId)->whereIn('template_ids', [0, $templateId])->orderBy("id",'asc');
  60. //增加js 向新增按钮添加参数还有编辑按钮添加参数
  61. Admin::script(
  62. <<<JS
  63. var button = $('.dialog-create');
  64. var currentUrl = button.attr('data-url');
  65. if (currentUrl.indexOf('?') === -1) {
  66. button.attr('data-url', currentUrl + '{$addUrl}');
  67. } else {
  68. button.attr('data-url', currentUrl + '{$addUrl}');
  69. }
  70. $('.quick-edit').each(function() {
  71. var currentUrl = $(this).attr('data-url');
  72. if (currentUrl.indexOf('?') === -1) {
  73. $(this).attr('data-url', currentUrl + '{$addUrl}');
  74. } else {
  75. // 如果已经有查询参数,添加 &id=123
  76. $(this).attr('data-url', currentUrl + '{$addUrl}');
  77. }
  78. });
  79. JS
  80. );
  81. });
  82. }
  83. /**
  84. * Make a show builder.
  85. *
  86. * @param mixed $id
  87. *
  88. * @return Show
  89. */
  90. // protected function detail($id)
  91. // {
  92. // return Show::make($id, DistAppearanceVariable::with(['distributor','appearance']), function (Show $show) {
  93. // $show->field('id');
  94. // $show->field('distributor.company_name','Distributor Name')->as(function ($company_name) {
  95. // if (empty($company_name)) {
  96. // return 'Site Variable';
  97. // }
  98. // return $company_name;
  99. // });
  100. // $show->field('appearance.title','Appearance Title');
  101. // $show->field('variable_type')->using(['1' => 'text', '2' => 'textarea', '3' => 'json']);
  102. // $show->field('variable_name');
  103. // $show->field('variable_value');
  104. //
  105. // $show->field('created_at');
  106. // $show->field('updated_at');
  107. // });
  108. // }
  109. /**
  110. * Make a form builder.
  111. *
  112. * @return Form
  113. */
  114. protected function form()
  115. {
  116. $templateId = isset($_GET['templateId']) ? intval($_GET['templateId']) : 0;
  117. $appearanceId = isset($_GET['appearanceId']) ? intval($_GET['appearanceId']) : 0;
  118. $distId = isset($_GET['distId']) ? intval($_GET['distId']) : 0;
  119. return Form::make(new DistAppearanceVariable(), function (Form $form) use ($templateId, $appearanceId, $distId) {
  120. $form->display('id');
  121. $form->hidden('appearance_id')->value($appearanceId);
  122. $form->hidden('dist_id')->value($distId);
  123. $form->hidden('template_ids')->value($templateId);
  124. //编辑时当template_ids为0时,site_variable为默认值1,否则为0
  125. $variableDefaul = 0;
  126. if (!$form->isCreating()) {
  127. if ($form->model()->template_ids == 0) {
  128. $variableDefaul = 1;
  129. }
  130. }
  131. $form->switch('site_variable')->value($variableDefaul);
  132. $form->radio('variable_type')->options([
  133. '1'=>'text',
  134. '2'=>'textarea',
  135. '3'=>'json'
  136. ])->default(1);
  137. $form->text('variable_name');
  138. $form->textarea('variable_value');
  139. $form->ignore(['site_variable']);
  140. $form->submitted(function (Form $form) {
  141. if ($form->site_variable == 1) {
  142. $form->template_ids = 0;
  143. }
  144. });
  145. });
  146. }
  147. }