| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109 |
- <?php
- namespace App\Module\Pet\AdminControllers\LazyRenderable;
- use App\Module\Pet\Models\PetUser;
- use App\Module\Pet\Enums\PetGrade;
- use App\Module\Pet\Enums\PetStatus;
- use App\Module\Pet\Repositorys\PetUserRepository;
- use Dcat\Admin\Grid;
- use Dcat\Admin\Grid\LazyRenderable;
- class PetUserLazyRenderable extends LazyRenderable
- {
- /**
- * 获取模型ID字段
- *
- * @return string
- */
- public function getModelSelectId()
- {
- return 'id';
- }
- /**
- * 获取模型显示字段
- *
- * @return string
- */
- public function getModelViewName()
- {
- return 'name';
- }
- /**
- * 获取模型类
- *
- * @return string
- */
- public function getModel()
- {
- return PetUser::class;
- }
- /**
- * 渲染表格
- *
- * @return Grid
- */
- public function grid(): Grid
- {
- return Grid::make(new PetUserRepository(), function (Grid $grid) {
- $grid->column('id', 'ID')->sortable();
- $grid->column('name', '宠物名称');
- $grid->column('grade', '品阶')->display(function ($value) {
- if ($value instanceof PetGrade) {
- $value = $value->value;
- }
- $labels = [
- PetGrade::FIRST->value => '一品',
- PetGrade::SECOND->value => '二品',
- PetGrade::THIRD->value => '三品',
- PetGrade::FOURTH->value => '四品',
- ];
- return $labels[$value] ?? '未知';
- });
- $grid->column('level', '等级');
- $grid->column('status', '状态')->display(function ($value) {
- if ($value instanceof PetStatus) {
- $value = $value->value;
- }
- $labels = [
- PetStatus::NONE->value => '未知',
- PetStatus::NORMAL->value => '正常',
- PetStatus::FIGHTING->value => '战斗中',
- PetStatus::DEAD->value => '死亡',
- ];
- return $labels[$value] ?? '未知';
- });
- $grid->quickSearch(['id', 'name']);
- $grid->filter(function (Grid\Filter $filter) {
- $filter->equal('id', 'ID');
- $filter->like('name', '宠物名称');
- $filter->equal('grade', '品阶')->select([
- PetGrade::FIRST->value => '一品',
- PetGrade::SECOND->value => '二品',
- PetGrade::THIRD->value => '三品',
- PetGrade::FOURTH->value => '四品',
- ]);
- $filter->equal('status', '状态')->select([
- PetStatus::NONE->value => '未知',
- PetStatus::NORMAL->value => '正常',
- PetStatus::FIGHTING->value => '战斗中',
- PetStatus::DEAD->value => '死亡',
- ]);
- });
- $grid->disablePagination(true);
- $grid->disableActions();
- $grid->disableBatchActions();
- $grid->disableCreateButton();
- });
- }
- }
|