UsersRoleController.php 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110
  1. <?php
  2. namespace App\Admin\Controllers;
  3. use App\Models\User;
  4. use App\Models\UserRole;
  5. use Dcat\Admin\Form;
  6. use Dcat\Admin\Grid;
  7. use Dcat\Admin\Show;
  8. use Dcat\Admin\Http\Controllers\AdminController;
  9. class UsersRoleController extends AdminController
  10. {
  11. /**
  12. * Make a grid builder.
  13. *
  14. * @return Grid
  15. */
  16. protected function grid()
  17. {
  18. return Grid::make(new UserRole(), function (Grid $grid) {
  19. $grid->model()->with('userData')->orderByDesc('id');
  20. $grid->column('id')->sortable();
  21. $grid->column('userData.name', '昵称');
  22. $grid->column('userData.avatar', '头像')->image('', 80, 80);
  23. $grid->column('userData.mobile', '手机号');
  24. $grid->column('name');
  25. $grid->column('sex');
  26. $grid->column('age');
  27. $grid->column('star');
  28. $grid->column('level', '年级');
  29. $grid->column('created_at');
  30. $grid->column('updated_at')->sortable();
  31. $grid->disableCreateButton();
  32. $grid->disableViewButton();
  33. $grid->export()->rows(function ($rows) {
  34. $exportRows = [];
  35. foreach ($rows as $index => $row) {
  36. // 确保 $row->userData 不为 null
  37. if (null !== $row->userData) {
  38. $user = $row->userData;
  39. $exportRow = [
  40. 'id' => $row->id,
  41. 'userData.name' => $user->name, // Add 'userData.name' to export
  42. 'userData.avatar' => $user->avatar, // Add 'userData.avatar' to export
  43. 'userData.mobile' => $user->mobile, // Add 'userData.avatar' to export
  44. 'name' => $row->name,
  45. 'sex' => $row->sex,
  46. 'age' => $row->age,
  47. 'star' => $row->star,
  48. 'level' => $row->level,
  49. 'created_at' => $row->created_at,
  50. 'updated_at' => $row->updated_at,
  51. ];
  52. $exportRows[] = $exportRow;
  53. }
  54. }
  55. // var_dump($exportRows);
  56. return collect($exportRows);
  57. });
  58. $grid->filter(function (Grid\Filter $filter) {
  59. $filter->panel();
  60. $filter->equal('level')->select(UserRole::$level);
  61. $filter->like('name');
  62. });
  63. });
  64. }
  65. /**
  66. * Make a show builder.
  67. *
  68. * @return Show
  69. */
  70. protected function detail($id)
  71. {
  72. return Show::make($id, new UserRole(), function (Show $show) {
  73. $show->field('id');
  74. $show->field('user_id');
  75. $show->field('name');
  76. $show->field('sex');
  77. $show->field('age');
  78. $show->field('star');
  79. $show->field('level');
  80. $show->field('created_at');
  81. $show->field('updated_at');
  82. });
  83. }
  84. /**
  85. * Make a form builder.
  86. *
  87. * @return Form
  88. */
  89. protected function form()
  90. {
  91. return Form::make(new UserRole(), function (Form $form) {
  92. $form->display('id');
  93. // $form->text('user_id');
  94. $form->text('name');
  95. $form->select('sex')->options(['男孩' => '男孩', '女孩' => '女孩']);
  96. $form->number('age');
  97. $form->text('star');
  98. $form->select('level')->options(UserRole::$level);
  99. $form->disableViewButton();
  100. $form->display('created_at');
  101. $form->display('updated_at');
  102. });
  103. }
  104. }