Dcat Admin 入门应用(六)列模态窗-异步数据和同步数据展示

Dcat Admin 是一个基于 Laravel-admin 二次开发而成的后台构建工具,只需很少的代码即可构建出一个功能完善的高颜值后台系统。支持页面一键生成 CURD 代码,内置丰富的后台常用组件,开箱即用,让开发者告别冗杂的 HTML 代码。
模式窗按需显示:通过if条件判断是否在column上添加模态窗显示

模式窗同步和异步获取数据展示
福利彩蛋:没有好玩的 API 接口?上百款免费接口等你来,免费 API,免费 API 大全

选择性添加模态窗

通过列的if判断,可以进行选择行的添加显示方式

$grid->column('remark')->if(function ($column) {
    if ($this->remark) {
        return $column->modal('操作内容', function ($modal) {
            return CommentReview::make([
                'content' => Helper::htmlEntityEncode($this->remark),
            ]);
        });
    }
});

同步数据展示

同步数据展示,页面表格渲染成功后,模态窗数据同时渲染并隐藏,触发模态窗的时候同步展示:

$grid->column('content', '专栏预览')->display(function () {
    return '<a href="javascript:" style="color:#fd644e;" data-src="">查看</a>';
})->modal('专栏预览', function () {
    $content = '<div>专栏标题:</div>';
    $content .= '<div style="padding: 10px 15px;">' . $this->title . '</div>';
    $content .= '<div style="margin-top: 20px">专栏简介:</div>';
    $content .= '<div style="padding: 10px 15px;">' . $this->description . '</div>';
    return "<div style='padding:10px 10px 0'>$content</div>";
});

异步数据展示

在触发模式窗的时候回通过请求服务端,获取需要展示的数据:如根据id查询数据等等

$grid->column('content', '预览')->display(function () {
    return '<a href="javascript:" style="color:#fd644e;" data-src="">查看</a>';
})->modal('预览', function () {
    //异步显示部分数据
    return ColumnReview::make([
        'columnTitle' => $this->title,
        'description' => $this->description
    ]);
});

示例代码是通过传递title和description进行展示:也可以不传递参数,在render方法里面通过$this->getKey()获取到当前行的Id主键值,在进行数据信息的查询

<?php

namespace App\Admin\Lazy\Examine;
use Dcat\Admin\Support\LazyRenderable;

class ColumnReview extends LazyRenderable
{

    /**
     * 渲染组件.
     *
     * @return mixed
     */
    public function render()
    {
        //$this->getKey()获取当前行的Id
        //根据Id查询相关信息,输出
        
        // TODO: Implement render() method.
        $content = '<div>标题:</div>';
        $content .= '<div style="padding: 10px 15px;">' . $this->columnTitle . $this->key.'</div>';
        $content .= '<div style="margin-top: 20px">简介:</div>';
        $content .= '<div style="padding: 10px 15px;">' . $this->description . '</div>';
        return "<div style='padding:10px 10px 0'>$content</div>";
    }
}

a

Logo

永洪科技,致力于打造全球领先的数据技术厂商,具备从数据应用方案咨询、BI、AIGC智能分析、数字孪生、数据资产、数据治理、数据实施的端到端大数据价值服务能力。

更多推荐