Guest User

dcat example

a guest
Apr 23rd, 2021
130
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 5.90 KB | None | 0 0
  1.  
  2.  
  3.     <?php
  4.     namespace App\Admin\Controllers;
  5.     use App\Admin\Metrics\Examples\NewDevices;
  6.     use App\Admin\Metrics\Examples\NewUsers;
  7.     use App\Admin\Metrics\Examples\TotalUsers;
  8.     use App\Admin\Renderable\PostTable;
  9.     use App\Admin\Renderable\UserTable;
  10.     use Dcat\Admin\Grid;
  11.     use Dcat\Admin\Layout\Content;
  12.     use Dcat\Admin\Layout\Row;
  13.     use Dcat\Admin\Models\Administrator;
  14.     use Faker\Factory;
  15.     use Illuminate\Routing\Controller;
  16.     class GridController extends Controller
  17.     {
  18.         use PreviewCode;
  19.         public function index(Content $content)
  20.         {
  21.             return $content
  22.                 ->header('表格')
  23.                 ->description('表格功能展示')
  24.                 ->body(function (Row $row) {
  25.                     $row->column(4, new TotalUsers());
  26.                     $row->column(4, new NewUsers());
  27.                     $row->column(4, new NewDevices());
  28.                 })
  29.                 ->body($this->grid());
  30.         }
  31.         protected function grid()
  32.         {
  33.             return new Grid(null, function (Grid $grid) {
  34.                 $grid->column('id')->code()->sortable();
  35.                 $grid->column('label')->explode()->label();
  36.                 $grid->column('progressBar')->progressBar()->sortable();
  37.                 $grid->column('expand')
  38.                     ->display(Factory::create()->name)
  39.                     ->expand(PostTable::make());
  40.                 $grid->column('select')->select(['GET', 'POST', 'PUT', 'DELETE']);
  41.                 $grid->column('switch')->switch();
  42.                 $grid->column('switchGroup', 'Switch Group')
  43.                     ->if(function () {
  44.                         return $this->id != mt_rand(3, 5);
  45.                     })
  46.                     ->switchGroup(['is_new', 'is_hot', 'published'])
  47.                     ->else()
  48.                     ->display('<i>None</i>');
  49.                 $grid->column('checkbox')->checkbox(['GET', 'POST', 'PUT', 'DELETE']);
  50.                 $grid->column('radio')
  51.                     ->if(function () {
  52.                         return $this->id != mt_rand(3, 5);
  53.                     })
  54.                     ->radio(['PHP', 'JAVA', 'GO', 'C'])
  55.                     ->else()
  56.                     ->display('<i>None</i>');
  57.                 $grid->disableCreateButton();
  58.                 $grid->disableActions();
  59.                 $grid->disableBatchDelete();
  60.                 $grid->disablePagination();
  61.                 // 设置表格数据
  62.                 $grid->model()->setData($this->generate());
  63.                 $grid->tools(function (Grid\Tools $tools) {
  64.                     $tools->append($this->buildPreviewButton());
  65.                 });
  66.                 // 过滤器
  67.                 $grid->filter(function (Grid\Filter $filter) {
  68.                     $group = function (Grid\Filter\Group $group) {
  69.                         $group->equal('等于');
  70.                         $group->gt('大于');
  71.                         $group->lt('小于');
  72.                         $group->nlt('大于等于');
  73.                         $group->ngt('小于等于');
  74.                         $group->like('包含');
  75.                         $group->startWith('包含(起始)');
  76.                         $group->endWith('包含(结束)');
  77.                         $group->match('正则');
  78.                     };
  79.                     $filter->group('id', $group)->width('350px');
  80.                     $filter->group('date', $group)->date()->width('350px');
  81.                     $filter->equal('select')->select(range(1, 10));
  82.                     $filter->in('multiple', 'Multiple Select')->multipleSelect(range(1, 10));
  83.                     $filter->between('between', 'Between')->datetime();
  84.                     $options = function ($keys) {
  85.                         if (!$keys) return $keys;
  86.                         $userModel = config('admin.database.users_model');
  87.                         return $userModel::findOrFail($keys)->pluck('name', 'id');
  88.                     };
  89.                     $filter->equal('user', 'User')
  90.                         ->selectTable(UserTable::make())
  91.                         ->title('User')
  92.                         ->model(Administrator::class)
  93.                         ->width('300px');
  94.                 });
  95.             });
  96.         }
  97.         public function update()
  98.         {
  99.             return [
  100.                 'status' => true,
  101.                 'message' => '修改成功',
  102.             ];
  103.         }
  104.         /**
  105.          * 生成假数据
  106.          *
  107.          * @return array
  108.          */
  109.         public function generate() {
  110.             $faker = Factory::create();
  111.             $data = [];
  112.             for ($i = 0; $i < 5; $i++) {
  113.                 $data[] = [
  114.                     'id' => $i+1,
  115.                     'label' => str_repeat($faker->name().',', mt_rand(1, 2)),
  116.                     'progressBar' => mt_rand(1, 100),
  117.                     'switch' => mt_rand(0, 1),
  118.                     'editable' => mt_rand(0, 14),
  119.                     'checkbox' => value(function () use ($faker) {
  120.                         $values = [];
  121.                         for ($i = 0; $i < mt_rand(1, 4); $i++) {
  122.                             $values[] = mt_rand(0, 3);
  123.                         }
  124.                         return join(',', $values);
  125.                     }),
  126.                     'radio' => mt_rand(0, 3),
  127.                     'is_new' => mt_rand(0, 1),
  128.                     'is_hot' => mt_rand(0, 1),
  129.                     'published' => mt_rand(0, 1),
  130.                 ];
  131.             }
  132.             return $data;
  133.         }
  134.         /**
  135.          * 生成假数据
  136.          *
  137.          * @return array
  138.          */
  139.         protected function genernateNames()
  140.         {
  141.             $faker = Factory::create();
  142.             $data = [];
  143.             for ($i = 0; $i < 15; $i++) {
  144.                 $data[] = $faker->name;
  145.             }
  146.             return $data;
  147.         }
  148.     }
  149.  
  150.  
Advertisement
Add Comment
Please, Sign In to add comment