laravel admin使用总结1--列表页、导出、按钮禁止

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

官方文档地址: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());

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值