官方文档地址:https://laravel-admin.org/docs/zh/
安装和配置可查看官方文档,不再赘述,这里只介绍几个自己使用时的可能会有的问题。
注:1.4和1.5以上是两个大版本,不管从文件路径还是数据库字段都有改动,所以不建议直接从1.4升级到1.5以上,如果非要升级的话,建议可以先把之前的代码复制出来一份,然后将项目中1.4版本laravel-admin卸载,重新安装1.5以上。截止编写本文时间,最新版本是1.7.7(即本列所用版本)。
1,基本使用:数据模型表格
protected function grid()
{
return Admin::grid(Articles::class, function (Grid $grid) {
//对文章进行过滤
$grid->model()->whereNotIn('id', [1,2,3]);
//字段展示方式
$grid->id('ID')->sortable(); //直接以字段名为方法,并将id列置为可排序
$grid->column('title','标题')->setAttributes(['style' => 'color:red;']); //由于title字段名和Grid对象的title冲突,所以使用column()方法代替,使用setAttributes给列添加样式
$grid->desc('描述')->style('font-size:20px'); //也可以使用style()方法添加样式
$grid->authors()->name('作者'); //取关联表中的字段,这里取的是文章的作者名
$grid->is_published('发布状态')->display(function ($value) {
return $value == 1 : '已发布' : '未发布'; //将字段格式化输出
});
$grid->created_at()->hide(); //对于不想进入列表页就展示的字段可以先隐藏,之后再通过列选择按钮将其显示出来
//设置搜索框
$grid->filter(function ($filter) {
// 去掉默认的id过滤器
$filter->disableIdFilter();
// 在这里添加字段过滤器
$filter->where(function ($query) {
$query->where('title', 'like', "%{$this->input}%")
->orWhere('desc', 'like', "%{$this->input}%")
}, '检索词')->placeholder('文章标题/描述'); //以输入的字段进行搜索
$filter->between('created_at', '创建时间')->datetime(); //设置一个以开始时间和结束时间的区间的时间搜索框
$filter->equal('is_published','状态')->select([0=>'未发布',1=>'已发布']); //以选择框的形式进行过滤
});
//数据导出,方便对需要导出额数据字段进行限制和格式化,也可以不写,不写默认导出所有字段
$grid->exporter(new ArticleExport()); //数据导出
$grid->disableActions(); //禁止行级右侧的所有操作按钮
$grid->disableCreateButton(); //禁止新建按钮
$grid->disableRowSelector(); //进行行选择按钮
});
}
(1)这里给出了几种取数据,格式化数据和给列加样式的方式,基本可以满足日常需求。
(2)可以通过$grid->model()->where()对列表页数据添加限制条件,这里使用whereNotIn('id',[1,2,3])来限制列表页显示id不等于1,2,3的所有数据
(3)可以通过$grid->xxx()->hide()来设置某个字段默认隐藏,像上面代码里$grid->created_at()->hide(),所以创建时间默认是未勾选的,即不展示,但可以通过勾选进行显示

(4)检索也给说了几种检索方式,注意一点,这里给出的equal()方法对应的是1.4版本的is()方法,更多可参考:https://laravel-admin.org/docs/zh/model-grid-filters
(5)代码最后给出了几种按钮的禁止方式,当然也可以设置全局禁止的方式,就不用每个grid里都写了。全局禁止写在app/Admin/bootstrap.php
use Encore\Admin\Grid;
Grid::init(function (Grid $grid) {
$grid->disableActions(); //禁止行级路由
$grid->disablePagination(); //禁止分页
$grid->disableCreateButton(); //禁止新增
$grid->disableFilter(); //禁止过滤
$grid->disableRowSelector(); //禁止列选择
$grid->disableColumnSelector(); //禁止行选择
$grid->disableTools(); //禁止工具栏
$grid->disableExport(); //禁止导出
$grid->actions(function (Grid\Displayers\Actions $actions) {
$actions->disableView(); //禁止行级查看路由
$actions->disableEdit(); //禁止行级编辑路由
$actions->disableDelete(); //禁止行级删除路由
});
});
2,数据导出:
class ArticleExport extends ExcelExporter implements WithMapping
{
protected $fileName;
public function __construct(Grid $grid = null)
{
parent::__construct($grid);
$this->fileName = '文章列表_' . date('Ymd') . '.xlsx'; //重新命名文件名
}
protected $columns = [
'id' => 'ID',
'title' => '标题',
'desc' => '描述',
'author_id' => '作者',
'is_published' => '发布状态',
'created_at' => '创建时间',
];
public function map($row): array
{
return [
$row->id,
$row->title,
$row->desc,
data_get($row, 'authors.name'), //关联表数据用data_get获取
$row->is_published == 1:'已发布':'未发布',
$row->created_at,
];
}
}
(1)我们可以在构造器里对文件名进行重命名,
(2)在$colums数组里设置需要导出的字段,在map()方法里对数据进行格式化输出
(3)对于关联表中的字段使用data_get()方法获取
(4)在grid()方法里进行调用,如最上面代码中展示的 :$grid->exporter(new ArticleExport());

本文详细介绍了在Laravel Admin中如何使用数据模型表格,包括数据筛选、字段展示及样式设置、数据导出等功能,提供了丰富的代码示例,帮助开发者快速上手。
2010

被折叠的 条评论
为什么被折叠?



