简介
单元操作行为组件用于在表格的单元格中添加可交互的操作按钮,支持弹窗、抽屉、确认框、下载、链接等多种操作方式。与右侧操作列不同,单元操作可以放在表格的任意列位置。
用法示例
弹窗操作(addColumnDialog)
use plugin\xbCode\builder\Builder;
// 创建表格
Builder::crud(function($builder) {
// 添加弹窗操作列
$builder->addColumnDialog('detail', '详情', '/api/detail');
});
自定义弹窗配置
Builder::crud(function($builder) {
// 使用回调函数配置弹窗
$builder->addColumnDialog('edit', '编辑', 'GET:/api/edit', function($component) {
$component->size('lg');
$component->title('编辑信息');
$component->width(150);
$component->className('text-primary');
});
// 使用数组配置
$builder->addColumnDialog('view', '查看', '/api/view', [
'width' => 100,
'fixed' => 'left'
]);
});
抽屉操作(addColumnDrawer)
Builder::crud(function($builder) {
// 添加抽屉操作列
$builder->addColumnDrawer('info', '信息', '/api/info', function($component) {
$component->title('详细信息');
$component->size('md');
$component->width(120);
});
});
确认框操作(addColumnConfirm)
Builder::crud(function($builder) {
// 添加确认框操作列
$builder->addColumnConfirm('delete', '删除', '/api/delete', '确认删除该数据吗?', '删除提示');
// 自定义样式
$builder->addColumnConfirm('remove', '移除', '/api/remove', '确认移除吗?', '温馨提示', [
'width' => 100
]);
});
下载操作(addColumnDownload)
Builder::crud(function($builder) {
// 添加下载操作列
$builder->addColumnDownload('file', '下载', '/api/download');
// 自定义配置
$builder->addColumnDownload('export', '导出', '/api/export', [
'width' => 100,
'align' => 'center'
]);
});
链接操作(addColumnLink)
Builder::crud(function($builder) {
// 添加链接操作列
$builder->addColumnLink('link', '访问', '/detail?id=${id}');
// 动态链接(使用字段值)
$builder->addColumnLink('url', '链接', '', function($component) {
// 空URL时自动使用字段值作为链接
$component->width(150);
});
});
URL操作(addColumnUrl)
Builder::crud(function($builder) {
// 添加URL操作列(新窗口打开)
$builder->addColumnUrl('preview', '预览', '/preview?id=${id}');
// 使用字段值作为URL
$builder->addColumnUrl('website', '网站', '', [
'width' => 120
]);
});
可用方法
| 方法名 | 参数 | 返回值 | 说明 |
|---|
| addColumnDialog | name, title, url, option | DialogAction | 添加弹窗操作列 |
| addColumnDrawer | name, title, url, option | DrawerAction | 添加抽屉操作列 |
| addColumnConfirm | name, title, url, content, cTitle, option | AjaxAction | 添加确认框操作列 |
| addColumnDownload | name, title, url, option | DownloadAction | 添加下载操作列 |
| addColumnLink | name, title, url, option | LinkAction | 添加链接操作列 |
| addColumnUrl | name, title, url, option | UrlAction | 添加URL操作列 |
addColumnDialog 参数
| 参数名 | 类型 | 默认值 | 说明 |
|---|
| name | string | 必填 | 列字段名称 |
| title | string | 必填 | 按钮文本/列标题 |
| url | string | 必填 | 请求地址(支持 METHOD:URL 格式) |
| option | callable|array | [] | 配置选项,可以是回调函数或数组 |
addColumnDrawer 参数
| 参数名 | 类型 | 默认值 | 说明 |
|---|
| name | string | 必填 | 列字段名称 |
| title | string | 必填 | 按钮文本/列标题 |
| url | string | 必填 | 请求地址(支持 METHOD:URL 格式) |
| option | callable|array | [] | 配置选项,可以是回调函数或数组 |
addColumnConfirm 参数
| 参数名 | 类型 | 默认值 | 说明 |
|---|
| name | string | 必填 | 列字段名称 |
| title | string | 必填 | 按钮文本/列标题 |
| url | string | 必填 | 请求地址(支持 METHOD:URL 格式) |
| content | string | '是否确认操作该数据?' | 确认框内容 |
| cTitle | string | '温馨提示' | 确认框标题 |
| option | array | [] | 配置选项数组 |
addColumnDownload 参数
| 参数名 | 类型 | 默认值 | 说明 |
|---|
| name | string | 必填 | 列字段名称 |
| title | string | 必填 | 按钮文本/列标题 |
| url | string | 必填 | 下载地址 |
| option | array | [] | 配置选项数组 |
addColumnLink 参数
| 参数名 | 类型 | 默认值 | 说明 |
|---|
| name | string | 必填 | 列字段名称 |
| title | string | 必填 | 按钮文本/列标题 |
| url | string | '' | 链接地址,空值时使用字段值 |
| option | callable|array | [] | 配置选项,可以是回调函数或数组 |
addColumnUrl 参数
| 参数名 | 类型 | 默认值 | 说明 |
|---|
| name | string | 必填 | 列字段名称 |
| title | string | 必填 | 按钮文本/列标题 |
| url | string | '' | 跳转地址,空值时使用字段值 |
| option | array | [] | 配置选项数组 |
组件通用属性
| 属性名 | 类型 | 默认值 | 说明 |
|---|
| name | string | - | 列字段名称 |
| label | string | - | 列标题 |
| level | string | link | 按钮样式(link/primary/danger等) |
| align | string | center | 水平对齐方式 |
| vAlign | string | middle | 垂直对齐方式 |
| width | int|string | - | 列宽度 |
| fixed | string | - | 固定列位置:'left'、'right' |
| className | string | - | CSS 类名 |
弹窗/抽屉特有属性
| 属性名 | 类型 | 默认值 | 说明 |
|---|
| size | string | md | 尺寸:xs/sm/md/lg/xl/full |
| title | string | - | 弹窗/抽屉标题 |
| icon | string | - | 按钮图标 |
URL参数绑定
所有操作的URL都支持动态参数绑定:
// 绑定ID字段
'/api/detail?id=${id}'
// 绑定多个字段
'/api/edit?id=${id}&type=${type}'
// 路径参数
'/detail/${id}'
完整示例
use plugin\xbCode\builder\Builder;
Builder::crud(function($builder) {
// 设置API接口
$builder->setUrl('/api/articles');
// ID列
$builder->addColumn('id', 'ID')->width(80);
// 标题列
$builder->addColumn('title', '标题');
// 查看详情(弹窗)
$builder->addColumnDialog('detail_btn', '查看', 'GET:/api/article/detail', function($component) {
$component->size('lg');
$component->title('文章详情');
$component->width(100);
$component->icon('fa fa-eye');
});
// 编辑(抽屉)
$builder->addColumnDrawer('edit_btn', '编辑', 'GET:/api/article/edit', function($component) {
$component->size('md');
$component->title('编辑文章');
$component->width(100);
$component->className('text-primary');
});
// 预览链接
$builder->addColumnLink('preview', '预览', '/article/view?id=${id}', [
'width' => 100
]);
// 下载附件
$builder->addColumnDownload('attachment', '附件', '/api/download/attachment', [
'width' => 100
]);
// 删除(确认框)
$builder->addColumnConfirm('del_btn', '删除', 'POST:/api/article/delete',
'确认删除该文章吗?删除后无法恢复!', '删除确认', [
'width' => 100
]
);
// 创建时间
$builder->addColumnDateTime('create_time', '创建时间')->width(160);
});
使用场景
弹窗操作
抽屉操作
确认框操作
下载操作
链接/URL操作
注意事项
- 所有单元操作默认为链接样式(level: 'link')
- 默认居中对齐显示(align: 'center', vAlign: 'middle')
- URL支持
METHOD:URL 格式指定请求方法(如 GET:/api/detail) - URL参数绑定使用
${字段名} 语法 - 弹窗和抽屉需要指定接口返回表单或内容Schema
- 确认框操作会在确认后发送请求
- 下载操作会自动处理文件下载
- 空URL时,Link和Url组件会使用字段值作为地址
- 删除类按钮自动添加红色样式(text-danger)
- 可以在同一个表格中使用多个不同类型的单元操作
与右侧操作按钮的区别
| 特性 | 单元操作 | 右侧操作按钮 |
|---|
| 位置 | 任意列 | 固定在最右侧 |
| 用途 | 单一操作 | 多个操作集合 |
| 字段 | 独立列 | 统一操作列 |
| 布局 | 分散显示 | 集中显示 |
建议根据实际需求选择使用:
- 单个重要操作:使用单元操作
- 多个操作:使用右侧操作按钮
- 特定字段相关操作:使用单元操作