dcat admin自定义操作按钮 弹框显示表单、数据表格

本文介绍了如何在DcatAdmin中使用自定义按钮创建弹框操作,包括加载Action、创建功能按钮和设置弹框内容,以及批量操作时需要注意的懒加载问题。
摘要由CSDN通过智能技术生成

dcat admin自定义按钮,弹框操作,虽然有文档但是有一些地方没写清楚
主要功能文档:弹框异步加载

简单介绍

这里使用弹框数据表格来说明,弹框表单官方文档有说明,其实原理相同,不同的只是body放入的是gride还是form

要实现这个功能,分为三步来理解
第一步: 加载Action,也就是grid中加入操作按钮

$grid->actions(function (Grid\Displayers\Actions $actions) {
    $actions->append(new CommissionContributionAction());
});

第二步: 创建这个功能按钮,添加Action类

<?php

namespace App\Admin\Actions\Grid;

use App\Admin\Actions\Pops\Grids\CommissionContributionGrid;
use Dcat\Admin\Grid\RowAction;
use Dcat\Admin\Widgets\Modal;

class CommissionContributionAction extends RowAction
{
    /**
     * @return string
     */
	protected $title = '贡献人详情';

    public function render()
    {
        // 模态框 ID
        $modalId = "contributions-modal-{$this->getKey()}";

        // 创建模态框
        $modal = Modal::make()
            ->lg()
            ->id($modalId)
            ->title('代理人贡献详情')
            ->body(CommissionContributionGrid::make(['agentId'=>$this->row->agent_id, 'date'=>$this->row->date]))
            ->button("<a class='btn btn-sm btn-primary'>$this->title</a>");

        // 将模态框添加到行操作中
        return $modal->render();
    }
}

第三步: 功能按钮点击会触发弹框,第三步就是设置弹框的内容

<?php

namespace App\Admin\Actions\Grid;

use App\Admin\Actions\Pops\Grids\CommissionContributionGrid;
use Dcat\Admin\Grid\RowAction;
use Dcat\Admin\Widgets\Modal;

class CommissionContributionAction extends RowAction
{
    /**
     * @return string
     */
	protected $title = '贡献人详情';

    public function render()
    {
        // 模态框 ID
        $modalId = "contributions-modal-{$this->getKey()}";

        // 创建模态框
        $modal = Modal::make()
            ->lg()
            ->id($modalId)
            ->title('代理人贡献详情')
            ->body(CommissionContributionGrid::make(['agentId'=>$this->row->agent_id, 'date'=>$this->row->date]))
            ->button("<a class='btn btn-sm btn-primary'>$this->title</a>");

        // 将模态框添加到行操作中
        return $modal->render();
    }
}

其他内容

运行 php artisan admin:action 命令,选择选项 2,生成数据表格行操作类

  1. 这里生成的代码关键部分没有点出来,跟官方文档不一样
    方法全部删掉,直接添加render渲染
    我尝试过,不删除其他的方法,在添加了ICON的情况下,会出现多个icon显示。
  2. 文档中没有说明按钮前的icon如何添加。
  3. 官方代码: $form = ResetPasswordForm::make()->payload(['id' => $this->getKey()]);
    这里存在一个很重要的点,payload是在实现懒加载类才有的功能,官方文档没有指出来。也就是说class ResetPassword extends Form implements LazyRenderable必须实现implements LazyRenderable

完整的代码如下:

<?php

namespace App\Admin\Actions\Grid;

use App\Admin\Forms\WithdrawAuditForm;
use Dcat\Admin\Grid\RowAction;
use Dcat\Admin\Widgets\Modal;
class WithdrawAuditAction extends RowAction
{
    protected $title = '审核';

    public function render()
    {
        $form = WithdrawAuditForm::make()->payload(['id' => $this->getKey()]);

        return Modal::make()
            ->lg()
            ->title($this->title)
            ->body($form)
            // 按钮前的icon添加方式
            ->button('<i class="feather icon-check-circle"></i> '.$this->title);
    }

}

批量操作并弹框

注意:与单个弹框不同,这里不能使用懒加载form,否则onShown渲染的时候,找不到ids
找不到ids的原因也很简单,懒加载渲染的表单在onShown执行之后,导致找不到对应的input

<?php

namespace App\Admin\Actions\Batch;

use Dcat\Admin\Grid\BatchAction;
use Dcat\Admin\Widgets\Modal;

class WithdrawAuditBatchAction extends BatchAction
{
    public function render()
    {
        $from = WithdrawAuditBatchForm::make();
        return Modal::make()
            ->title('批量审核提现')
            ->lg()
            ->body($from)
            ->button("批量审核")
            ->onShown(<<<js
var ids = {$this->getSelectedKeysScript()}
$("#ids").val(ids.join(','));
js
            );
    }
}
<?php

namespace App\Admin\Actions\Batch;

use Dcat\Admin\Widgets\Form;

class WithdrawAuditBatchForm extends Form
{

    /**
     * Handle the form request.
     *
     * @param array $input
     *
     * @return mixed
     */
    public function handle(array $input)
    {
        // 处理事件
    }

    public function form()
    {
        $this->radio('status', '状态')->options([
            '200' => '审核通过',
            '300' => '审核拒绝',
        ])->default('200')->required();
        $this->textarea('reason', '其他说明');
        $this->hidden('ids')->attribute('id', 'ids');
    }
}

  • 7
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Dcat Admin是一个基于Laravel-admin二次开发而成的后台构建工具,只需很少的代码即可构建出一个功能完善的高颜值后台系统。支持页面一键生成CURD代码,内置丰富的后台常用组件,开箱即用,让开发者告别冗杂的HTML代码。 Dcat Admin后台构建工具特点: 用户管理 RBAC 权限管理,支持无限极权限节点 菜单管理 使用 pjax 构建无刷新页面,支持按需加载静态资源,可以无限扩展组件而不影响整体性能 松耦合的页面构建与数据操作设计,可轻松切换数据源 多主题切换,内置多种主题色 可轻松构建无菜单的独立页面(如可用于构建弹窗选择器等功能) 插件功能 可视化代码生成器,可根据数据表一键生成增删改查页面 数据表格构建工具,内置丰富的表格常用功能(如组合表头、数据导出、搜索、快捷创建、批量操作等) 树状表格功能构建工具,支持分页和局部加载 数据表单构建工具,内置丰富的表单类型,支持表单异步提交 分步表单构建工具 弹窗表单构建工具 数据详情页构建工具 无限层级树页面构建工具,支持用拖拽的方式实现数据的层级、排序等操作 内置丰富的常用页面组件(如图表、数据统计卡片、下拉菜单、Tab 卡片、提示工具等) Section 功能(类似 Wordpress 的 Filter 和 blade 模板的 section 标签) 异步文件上传表单,支持分块多线程上传 多应用/多后台(暂未实现) 插件市场,只需在管理页面轻轻点击鼠标即可完成插件的安装、更新和卸载等操作(暂未实现) Dcat Admin后台构建工具环境: PHP >= 7.1.0 Laravel 5.5.0 ~ 7.* Fileinfo PHP Extension
dcat admin 是一个基于 Laravel 框架的后台管理系统,可以通过定制化页面和弹框来满足不同的需求。 对于自定义页面,我们可以按照以下步骤来实现: 1. 创建自定义页面的路由:在 `routes/admin.php` 文件中添加对应的路由,指定访问路径和对应的控制器方法。 2. 创建控制器方法:在控制器中定义对应的方法,用于处理自定义页面的逻辑。 3. 创建视图文件:在 `resources/views/admin` 目录下创建与控制器方法相对应的视图文件,用于展示页面内容。 4. 添加菜单导航:在 `config/admin_menus.php` 文件中添加对应的菜单导航,以方便在系统中快速访问自定义页面。 通过以上步骤完成后,即可在 dcat admin 系统的侧边中看到自定义页面对应的菜单,并能正常访问和操作。 对于弹框,我们可以使用 dcat admin 提供的弹框组件来实现: 1. 在自定义页面中引入弹框组件:可以使用 `Dcat\Admin\Admin::html()` 方法创建弹框组件,设置好对应的弹框标题、内容和按钮。 2. 添加触发弹框按钮:在自定义页面中添加触发弹框按钮,在点击按钮时触发对应的弹框。 3. 编写弹框回调函数:可以在弹框组件的参数中指定弹框的回调函数,用于处理弹框的确认或取消操作。 通过以上步骤,即可在自定义页面中实现弹框功能,方便用户进行相关操作和展示提示信息。 总结起来,dcat admin 提供了丰富的功能和组件,通过定制化页面和弹框,可以更好地满足不同的需求,实现个性化的后台管理系统。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值