| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166 |
- <?php
- namespace App\Module\Friend\AdminControllers\Helper;
- use Dcat\Admin\Grid;
- use Dcat\Admin\Grid\Column;
- /**
- * 表格助手类
- *
- * 用于辅助构建后台表格
- */
- class GridHelper
- {
- /**
- * Grid 实例
- *
- * @var Grid
- */
- protected $grid;
- /**
- * 构造函数
- *
- * @param Grid $grid
- */
- public function __construct(Grid $grid)
- {
- $this->grid = $grid;
- }
- /**
- * 创建实例
- *
- * @param Grid $grid
- * @return static
- */
- public static function make(Grid $grid)
- {
- return new static($grid);
- }
- /**
- * 添加ID列
- *
- * @param string $label
- * @return Column
- */
- public function id(string $label = 'ID'): Column
- {
- return $this->grid->column('id', $label);
- }
- /**
- * 添加普通列
- *
- * @param string $name
- * @param string $label
- * @return Column
- */
- public function column(string $name, string $label): Column
- {
- return $this->grid->column($name, $label);
- }
- /**
- * 添加操作列
- *
- * @param string $label
- * @return Column
- */
- public function actions(string $label = '操作'): Column
- {
- return $this->grid->column('actions', $label);
- }
- /**
- * 添加批量操作
- *
- * @param string $title
- * @param callable $callback
- * @return Grid\Tools\BatchAction
- */
- public function batchAction(string $title, callable $callback)
- {
- return $this->grid->batchActions(function (Grid\Tools\BatchActions $actions) use ($title, $callback) {
- $actions->add($title, $callback);
- });
- }
- /**
- * 添加工具按钮
- *
- * @param string $title
- * @param callable $callback
- * @return Grid\Tools\ToolButton
- */
- public function toolButton(string $title, callable $callback)
- {
- return $this->grid->tools(function (Grid\Tools $tools) use ($title, $callback) {
- $tools->append($callback($tools->button($title)));
- });
- }
- /**
- * 添加导出按钮
- *
- * @param string $title
- * @param string $filename
- * @param array $columns
- * @return Grid
- */
- public function export(string $title, string $filename, array $columns = [])
- {
- return $this->grid->export()->filename($filename)->titles($columns)->rows(function (array $rows) {
- return $rows;
- });
- }
- /**
- * 添加快速创建
- *
- * @param callable $callback
- * @return Grid\Tools\QuickCreate
- */
- public function quickCreate(callable $callback)
- {
- return $this->grid->quickCreate(function (Grid\Tools\QuickCreate $create) use ($callback) {
- $callback($create);
- });
- }
- /**
- * 添加分页
- *
- * @param int $perPage
- * @return Grid
- */
- public function paginate(int $perPage = 20)
- {
- return $this->grid->paginate($perPage);
- }
- /**
- * 添加排序
- *
- * @param string $column
- * @param string $direction
- * @return Grid
- */
- public function orderBy(string $column, string $direction = 'desc')
- {
- return $this->grid->orderBy($column, $direction);
- }
- /**
- * 添加模型查询
- *
- * @param callable $callback
- * @return Grid
- */
- public function model(callable $callback)
- {
- return $this->grid->model()->where($callback);
- }
- }
|