JobfairoutSchoolController.php 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186
  1. <?php
  2. namespace App\Admin\Controllers\Jobfairout;
  3. use App\Http\Controllers\Controller;
  4. use Encore\Admin\Controllers\HasResourceActions;
  5. use Encore\Admin\Facades\Admin;
  6. use Encore\Admin\Form;
  7. use Encore\Admin\Grid;
  8. use Encore\Admin\Layout\Content;
  9. use Encore\Admin\Show;
  10. use App\Models\Jobfairout\JobfairoutSchool;
  11. use App\Admin\Exports\Jobfairout\SchoolExport;
  12. use App\Admin\Extensions\Form\ValidateForm;
  13. class JobfairoutSchoolController extends Controller
  14. {
  15. use HasResourceActions;
  16. /**
  17. * Index interface.
  18. *
  19. * @param Content $content
  20. * @return Content
  21. */
  22. public function index(Content $content)
  23. {
  24. $grid = $this->grid()->render();
  25. return $content
  26. ->header('学校列表')
  27. ->description('')
  28. ->body(view('admin.jobfairout.school')->with(['grid'=>$grid]));
  29. }
  30. /**
  31. * Show interface.
  32. *
  33. * @param mixed $id
  34. * @param Content $content
  35. * @return Content
  36. */
  37. public function show($id, Content $content)
  38. {
  39. return $content
  40. ->header('招聘会详情')
  41. ->description('')
  42. ->body($this->detail($id));
  43. }
  44. /**
  45. * Edit interface.
  46. *
  47. * @param mixed $id
  48. * @param Content $content
  49. * @return Content
  50. */
  51. public function edit($id, Content $content)
  52. {
  53. return $content
  54. ->header('学校编辑')
  55. ->description('')
  56. ->body($this->form()->edit($id));
  57. }
  58. /**
  59. * Create interface.
  60. *
  61. * @param Content $content
  62. * @return Content
  63. */
  64. public function create(Content $content)
  65. {
  66. return $content
  67. ->header('学校创建')
  68. ->description('带*号必填项')
  69. ->body($this->form());
  70. }
  71. /**
  72. * Make a grid builder.
  73. *
  74. * @return Grid
  75. */
  76. protected function grid()
  77. {
  78. $grid = new Grid(new JobfairoutSchool);
  79. $grid->model()->orderBy('sort', 'desc');
  80. $grid->id('ID');
  81. $grid->name('校名')->width(200);
  82. $grid->url('官网')->display(function ($url){
  83. return "<a target='_blank' href='$url'>".$url."</a>";
  84. })->width(200);
  85. $grid->logo('校徽')->display(function($logo){
  86. return '<span class="vtip" title="<img src=\''.upload_asset($logo).'\' height=120>">
  87. <img class="avatar small" src="'.upload_asset($logo).'" align="absmiddle" style="width: 22px;height: 22px;">
  88. </span>';
  89. });
  90. $grid->major('专业优势')->width(400);
  91. $grid->created_at('创建时间');
  92. $grid->filter(function ($filter) {
  93. $filter->like('name', '校名');
  94. });
  95. if (Admin::user()->can('jobfairout_schools_create')) {
  96. $grid->disableCreateButton(false);
  97. }
  98. //批量删除
  99. if (Admin::user()->can('jobfairout_schools_delete')) {
  100. $grid->tools(function ($tools) {
  101. $tools->batch(function ($batch) {
  102. $batch->disableDelete(false);
  103. });
  104. });
  105. } else {
  106. $grid->disableRowSelector();
  107. }
  108. if (Admin::user()->can('jobfairout_schools_export')) {
  109. $grid->disableExport(false); //显示导出按钮
  110. $grid->exporter(new SchoolExport()); //传入自己在第1步创建的导出类
  111. }
  112. $grid->actions(function ($actions) {
  113. if (Admin::user()->can('jobfairout_schools_edit')) {
  114. $actions->disableEdit(false);
  115. }
  116. if (Admin::user()->can('jobfairout_schools_delete')) {
  117. $actions->disableDelete(false);
  118. }
  119. });
  120. return $grid;
  121. }
  122. /**
  123. * Make a show builder.
  124. *
  125. * @param mixed $id
  126. * @return Show
  127. */
  128. protected function detail($id)
  129. {
  130. $show = new Show(JobfairoutSchool::findOrFail($id));
  131. $show->id('ID');
  132. $show->name('校名')->width(200);
  133. $show->url('官网');
  134. $show->logo('校徽')->image();
  135. $show->major('专业优势');
  136. $show->remarks('备注');
  137. $show->introduce('简介')->setEscape(false);
  138. $show->created_at('创建时间');
  139. $show->updated_at('更新时间');
  140. return $show;
  141. }
  142. /**
  143. * Make a form builder.
  144. *
  145. * @return Form
  146. */
  147. protected function form()
  148. {
  149. $form = new ValidateForm(new JobfairoutSchool);
  150. $form->text('name', '校名')->rules('required|max:50', array('required'=>'校名不能为空。', 'max'=>'校名长度不能大于50个字符。'))->setWidth(4)->setMustMark();
  151. $form->url('url', '官网')->help('(请输入包含http://或https://的完整链接)')->setMustMark();
  152. $form->image('logo', '校徽')->uniqueName()->rules('image|mimes:jpeg,bmp,png', array('image'=>'校徽请选择图片文件。','mimes'=>'请选择jpeg,bmp,png格式的校徽上传。'))->setMustMark()->setWidth(3);
  153. $form->textarea('major', '优势专业')->rules('max:255', array('max'=>'优势专业不能大于255个字符。'))->setMustMark();
  154. $form->textarea('remarks', '备注')->rules('max:255', array('max'=>'备注不能大于255个字符。'));
  155. $form->editor('introduce', '简介')->rules('required', array('required'=>'简介不能为空。'))->setMustMark();
  156. $form->number('sort', '排序')->min(1)->max(255)->default(1)->help('(数字越大越靠前)')->setMustMark();
  157. return $form;
  158. }
  159. public function destroy($id)
  160. {
  161. if ($this->form()->destroy($id)) {
  162. $data = [
  163. 'status' => true,
  164. 'message' => trans('admin.delete_succeeded'),
  165. ];
  166. } else {
  167. $data = [
  168. 'status' => false,
  169. 'message' => trans('admin.delete_failed'),
  170. ];
  171. }
  172. return response()->json($data);
  173. }
  174. }