希望增加表格动态右侧添加按钮的功能

翻了一下文档,不知道是没找到还是没有,好像并没有找到根据条件动态添加操作按钮的功能。
只找到了一个replaceRightButton 貌似是直接替换掉整个右侧 …… 
有时候可能会需要根据数据中的一部分条件,比如id, 或者其它字段值,动态调整右侧的操作按钮。
已邀请:

herd21 - 这人好懒..没有简介...

赞同来自: dolphinphp xinhua

临时解决方案:
// 拿出Builder对象
$Builder = ZBuilder::make('table');
// 公共部分设置
$Builder->setSearch(['title' => '标题'])// 设置搜索框
->addColumns([ // 批量添加数据列
['id', 'ID'],
['title', '标题', 'text.edit'],
['create_time', '创建时间', 'datetime'],
['update_time', '更新时间', 'datetime'],
['status', '状态', 'switch'],
['right_button', '操作', 'btn']
])
->addOrder('id,title,create_time,update_time')
->setRowList($data_list)// 设置表格数据
->addValidate('Page', 'title');
// 自定义控制
$topButton = false;
$leftButton = true;
if ($topButton) {
$Builder->addTopButtons('add,enable,disable,delete'); // 批量添加顶部按钮
}
if ($leftButton) {
$Builder->addRightButtons(['edit', 'delete' => ['data-tips' => '删除后无法恢复。']]);// 批量添加右侧按钮
}
// 渲染模板
return $Builder->fetch();

herd21 - 这人好懒..没有简介...

赞同来自: dolphinphp

行级自定义控制临时解决方案:
 
第一步:
// 将其中一列(例如ID列)转换成callback以便处理行级覆盖方法
->addColumn('replace', 'id', 'callback', [$this, 'replace'], '__data__')

 第二步:
function replace($data) {
// 取出右侧按钮的Str字符串
$rightButtonStr = $data['right_button'];
// 根据自己的自定义规则任意处理正则隐藏不需要的按钮或修改内容
if ($data['id'] == 1) {
$rightButtonStr = preg_replace('/<a\stitle="编辑".*?<\/a>/', '', $rightButtonStr);
}
// 将新的按钮组覆盖原行数据(此时Bulider已处理完按钮的编译,覆盖即覆盖到已编译完成的结果)
$data['right_button'] = $rightButtonStr;
// 返回本列原有的内容
return $data['id'];
}
-------------
利用此方法会直接覆盖到渲染页面的数据,有可能污染其他字段,谨慎使用

dolphinphp

赞同来自:

目前仅能根据条件替换按钮,后续版本会继续优化,根据条件显示不同按钮。

要回复问题请先登录注册