数据表格

    使用下面的代码可以生成 blog 的数据表格。

    1. <?php
    2. namespace App\Admin\Controller;
    3. use Illuminate\Routing\Controller;
    4. use ModStart\Admin\Concern\HasAdminDetail;
    5. use ModStart\Admin\Concern\HasAdminForm;
    6. use ModStart\Admin\Concern\HasAdminGrid;
    7. use ModStart\Detail\Detail;
    8. use ModStart\Form\Form;
    9. use ModStart\Grid\Grid;
    10. use ModStart\Grid\GridFilter;
    11. class BlogController extends Controller
    12. {
    13. // 设置当前 Controller 包含 Grid、Form、Detail 三种特性
    14. use HasAdminGrid;
    15. use HasAdminForm;
    16. use HasAdminDetail;
    17. // 定义当前页面主标题
    18. public $pageTitle = '博客';
    19. public function grid()
    20. $grid = Grid::make('blog');
    21. // 定义显示ID列
    22. $grid->id('id', 'ID');
    23. // 定义标题字段,格式为单行文本
    24. $grid->text('title', '标题');
    25. // 定义封面字段,格式为单张图片
    26. $grid->image('cover', '封面');
    27. // 定义摘要字段,格式为多行文本
    28. $grid->textarea('summary', '摘要');
    29. // 定义内容字段,格式为富文本
    30. $grid->richHtml('content', '内容');
    31. // 定义创建时间字段,格式为简单显示
    32. $grid->display('created_at', '创建时间');
    33. // 定义搜索过滤字段
    34. $grid->gridFilter(function (GridFilter $filter) {
    35. // 定义ID可搜索
    36. $filter->eq('id', 'ID');
    37. // 定义标题可模糊查找
    38. $filter->like('title', '标题');
    39. });
    40. // 定义整体增删改查标题为「博客」
    41. $grid->title('博客');
    42. return $grid;
    43. }
    44. public function form()
    45. {
    46. return Form::make('blog', function (Form $form) {
    47. // 定义标题字段,格式为单行文本
    48. $form->text('title', '标题');
    49. // 定义封面字段,格式为单张图片
    50. $form->image('cover', '封面');
    51. // 定义摘要字段,格式为多行文本
    52. // 定义内容字段,格式为富文本
    53. $form->richHtml('content', '内容');
    54. });
    55. }
    56. public function detail()
    57. {
    58. return Detail::make('blog', function (Detail $detail) {
    59. // 定义显示ID列
    60. $detail->id('id', 'ID');
    61. // 定义标题字段,格式为单行文本
    62. $detail->text('title', '标题');
    63. // 定义封面字段,格式为单张图片
    64. $detail->image('cover', '封面');
    65. // 定义摘要字段,格式为多行文本
    66. $detail->textarea('summary', '摘要');
    67. // 定义内容字段,格式为富文本
    68. $detail->richHtml('content', '内容');
    69. // 定义创建时间字段,格式为简单显示
    70. $detail->display('created_at', '创建时间');
    71. // 定义更新时间字段,格式为简单显示
    72. $detail->display('updated_at', '更新时间');
    73. });
    74. }
    75. }

    定义Routes

    1. <?php
    2. Route::group(
    3. [
    4. 'prefix' => env('ADMIN_PATH', '/admin/'),
    5. 'middleware' => ['admin.bootstrap', 'admin.auth'],
    6. 'namespace' => '\App\Admin\Controller',
    7. ], function () {
    8. Route::match(['get', 'post'], 'blog', 'BlogController@index');
    9. Route::match(['get', 'post'], 'blog/add', 'BlogController@add');
    10. Route::match(['get', 'post'], 'blog/edit', 'BlogController@edit');
    11. Route::match(['get', 'post'], 'blog/delete', 'BlogController@delete');
    12. Route::match(['get', 'post'], 'blog/show', 'BlogController@show');
    13. });

    数据表格仓库

    使用数据表名称创建数据表格

    1. $grid = Grid::make('blog');

    使用数据模型类

    使用数据模型类来创建数据表格

      其中 Blog 定义如下

      1. <?php
      2. namespace App\Models;
      3. use Illuminate\Database\Eloquent\Model;
      4. class Blog extends Model
      5. {
      6. protected $table = 'blog';
      7. }

      列的配置和使用

      1. $grid->display('field','名称');

      设定宽度

      1. $grid->display('field','名称')->width(100);

      自定义渲染

      1. $grid->display('field','自定义列')->hookRendering(function (AbstractField $field, $item, $index) {
      2. return '<span>自定义内容:'.$item->field.'</span>';
      3. });

      数据表格行默认有 3 个操作:编辑删除查看,可以通过如下方式关闭。

      1. // 关闭编辑
      2. // 关闭删除
      3. $grid->canDelete(false);
      4. // 关闭查看
      5. $grid->canShow(false);
      6. // 一键关闭编辑、删除、查看
      7. $grid->disableCUD();

      自定义渲染行操作

      1. $grid->hookItemOperateRendering(function (ItemOperate $itemOperate) {
      2. // 当前行数据
      3. $item = $itemOperate->item();
      4. // 在默认操作之前增加操作
      5. $itemOperate->prepend('<a href="#">其他操作</a>');
      6. // 在默认操作之后增加操作
      7. $itemOperate->push('<a href="#">其他操作</a>');
      8. });

      不显示操作列

      1. $grid->disableItemOperate();

      筛选条件的配置

      1. $grid->gridFilter(function (GridFilter $filter) {
      2. $filter->eq('id', 'ID');
      3. $filter->like('title', '标题');
      4. })

      工具栏配置使用

      在右上角工具栏增加操作

      1. $grid->gridOperateAppend('<a href="#" class="btn btn-primary">操作</a>');

      默认按照ID倒序排序,可自定义列表排序

      1. $grid->defaultOrder(['字段', 'asc或desc']);

      字段使用介绍

      为 Grid 定义一个字段

      1. $field = $grid->text('field', '名称');

      字段可排序

      定义后在 Grid 顶端会出现上下箭头的可点击实现 正序、倒序、默认 三种排序方式

      1. $field->sortable(true);

      所有字段支持

      显示 display

      1. $grid->display('field','名称');

      单行文本 text

      多选 checkbox

      1. $grid->checkbox('field', '名称');

      标签 tags

      1. $grid->tags('field', '名称');

      代码 code

      1. $grid->code('field', '名称');

      树状组件 tree

      1. $grid->tree('field', '名称');

      类型 type

      1. $grid->type('field', '类型');

      密码 password

      1. $grid->password('field', '类型');

      单张图片 image

      1. $grid->image('field', '类型');

      多张图片 images

      1. $grid->type('field', '类型');
      1. $grid->type('field', '类型');
      1. $grid->link('field', '类型');

      开关 switch

      1. $grid->switch('field', '类型');

      多行文本 textarea

      1. $grid->textarea('field', '类型');

      颜色 color

      1. $grid->color('field', '类型');

      日期 date

      1. $grid->date('field', '类型');

      日期时间 datetime

      1. $grid->datetime('field', '类型');

      时间 time

      1. $grid->time('field', '类型');

      单选 radio

      1. $grid->radio('field', '类型');

      下拉 select

      富文本 richHtml

      1. $grid->richHtml('field', '类型');

      Markdown markdown

      1. $grid->markdown('field', '类型');

      键值对列表 keyValueList

      1. $grid->keyValueList('field', '类型');
      1. $grid->values('field', '类型');

      HTML html

      1. $grid->html('field', '类型');

      数字 number

      1. $grid->number('field', '类型');

      百分比 percent

      1. $grid->percent('field', '类型');

      小数 decimal

      1. $grid->decimal('field', '类型');

      货币 currency

      1. $grid->currency('field', '类型');

      ID id

      1. $grid->id('field', '类型');

      验证码 captcha

      1. $grid->captcha('field', '类型');

      临时文件 fileTemp

      1. $grid->fileTemp('field', '类型');

      文件 file

      1. $grid->file('field', '类型');

      视频 video

      1. $grid->video('field', '类型');

      音频 audio

      1. $grid->audio('field', '类型');

      中国地区 areaChina

      1. $grid->areaChina('field', '类型');

        图标 icon

        更多内置组件请参照 ModStart\Support\Manager\FieldManager 中的定义