dcat admin 运用工具表单在列表中制作一个弹出编辑框
2024-6-20|2024-6-20
夜火/xloong
type
Post
status
Published
date
Jun 20, 2024
slug
modal-edit-box-dcat-admin
summary
上一篇[[dcat admin中新建方法页面丢失样式的问题]] 说到如何创建一个独立的表单页面来更新数据,实现特定的用户充值功能。这次说说如何不创建独立的页面(数据表单),直接在列表页弹出modal模态框,进行表单提交,数据更新。
tags
Laravel
PHP
category
技术分享
icon
password
URL
Property
Jun 20, 2024 04:13 AM
注:以下内容基于php 8.1,laravel 10, dcat admin 2
上一篇[[dcat admin中新建方法页面丢失样式的问题]] 说到如何创建一个独立的表单页面来更新数据,实现特定的用户充值功能。
这次说说如何不创建独立的页面(数据表单),直接在列表页弹出modal模态框,进行表单提交,数据更新。
工具表单 tools-form
使用命令创建
php artisan admin:form UserRechargeForm
生成工具表单文件
app/Admin/Forms/UserRechargeForm.php
,参照文档将上一篇单独页面的代码挪到这里。namespace App\\Admin\\Forms; use App\\Models\\User; use Dcat\\Admin\\Widgets\\Form; use Dcat\\Admin\\Traits\\LazyWidget; use Dcat\\Admin\\Contracts\\LazyRenderable; class UserRechargeForm extends Form implements LazyRenderable { public $title = '充值'; use LazyWidget; public function handle(array $input) { // dump($input); // 获取外部传递参数 $id = $this->payload['id'] ?? null; $recharge_money = $input['recharge_money'] ?? null; $recharge_address = $input['recharge_address'] ?? null; $transaction_id = $input['transaction_id'] ?? null; // ... 充值的逻辑代码 // return $this->response()->error('Your error message.'); return $this ->response() ->success('Processed successfully.') ->refresh(); } public function form() { $id = $this->payload['id'] ?? null; // 输入字段 $this->text('money', '充值金额') ->required() ->rules(['numeric', 'min:0']); // ... } public function default() { $id = $this->payload['id'] ?? null; $user = User::find($id); return [ 'id' => $id, 'name' => $user->name, // ... ]; } }
这里文档中给的使用范例
Modal::make()
,一直没搞懂在那里使用的,直到看到后面的代码动作 action
命令
php artisan admin:action
选
2
grid-row
,然后输入要创建的 action 类名 UserRecharge
在创建的文件中编辑
// app\\Admin\\Actions\\Grid\\UserRecharge.php // ... use Dcat\\Admin\\Widgets\\Modal; use App\\Admin\\Forms\\UserRechargeForm; class UserRecharge extends RowAction { protected $title = '充值'; public function render(){ // 实例化表单类并传递自定义参数 $form = UserRechargeForm::make()->payload(['id' => $this->getKey()]); return Modal::make() ->lg() ->title($this->title) ->body($form) ->button($this->title); } // ...
将action动作按钮放入数据表格列表中
回到控制器,主要是
$grid->actions
这一句// app/Admin/Controllers/UserController.php // ... use App\\Admin\\Actions\\Grid\\UserRecharge; class UserController extends AdminController { // ... protected function grid() { return Grid::make(Administrator::with(['roles']), function (Grid $grid) { // ... $grid->actions([new UserRecharge()]); // ...
添加好之后,即可在列表的操作栏看到充值的文字选项了。