替换右侧按钮

replaceRightButton('匹配条件', '最终要替换的内容', '目标按钮')

版本新增功能
1.0.5增强条件判断,支持替换指定按钮
1.4.2替换内容支持数据变量

如果要修改某些数据的右侧按钮,比如,管理员用户组不给用户操作,只显示一个不可操作的按钮。

  1. ->replaceRightButton(['id' => 1], '<button class="btn btn-danger btn-xs" type="button" disabled>不可操作</button>') // 修改id为1的按钮

上面的代码是将id字段为1的数据,右侧按钮替换为”不可操作“;

设置多个匹配条件

  1. ->replaceRightButton(['id' => 1, 'status' => 1], '<button class="btn btn-danger btn-xs" type="button" disabled>不可操作</button>') // 修改id为1的按钮

表示id字段为1并且status字段为1的数据,右侧按钮替换为”不可操作“;

设置多个替换规则

  1. ->replaceRightButton(['id' => 1], '<button class="btn btn-danger btn-xs" type="button" disabled>不可操作</button>')
  2. ->replaceRightButton(['id' => 2], '<button class="btn btn-danger btn-xs" type="button" disabled>可操作</button>')

从1.0.5版本开始,增强了条件判断,并支持替换指定按钮

比如:

  1. ->replaceRightButton(['status' => ['in', '0,1']], '', 'edit,delete')

表示当status字段为0或者1,则将编辑按钮和删除按钮替换为空,即不显示这两个按钮。

也可以这样写:

  1. ->replaceRightButton(['status' => ['in', '0,1']], '', ['edit', 'delete'])

提示:如果不指定替换的按钮,则默认替换所有按钮。

  1. ->replaceRightButton(['status' => 1], '')

表示如果status为1,则不显示所有按钮。

注意,以上的例子指定了替换编辑按钮和删除按钮,也就是需要添加这两个按钮,判断才起作用。

replaceRightButton方法的第一个参数是判断条件,基本使用方法如下:

  1. ['字段名' => ['表达式', '对比条件']]

表达式不分大小写,支持的查询表达式有下面几种,分别表示的含义是:

表达式含义
EQ、=等于(=)
NEQ、<>不等于(<>)
GT、>大于(>)
EGT、>=大于等于(>=)
LT、<小于(<)
ELT、<=小于等于(<=)
[NOT] BETWEEN(不在)区间查询
[NOT] IN(不在)IN 查询

表达式查询的用法示例如下:

EQ :等于(=)

  1. ->replaceRightButton(['status' => 1], '', 'edit')
  2. ->replaceRightButton(['status' => ['eq', 1]], '', 'edit')
  3. ->replaceRightButton(['status' => ['=', 1]], '', 'edit')

表示status字段等于1时,不显示编辑按钮。

NEQ: 不等于(<>)

  1. ->replaceRightButton(['status' => ['neq', 1]], '', 'edit')
  2. ->replaceRightButton(['status' => ['<>', 1]], '', 'edit')

表示status字段不等于1时,不显示编辑按钮。

GT:大于(>)

  1. ->replaceRightButton(['status' => ['gt', 1]], '', 'edit')
  2. ->replaceRightButton(['status' => ['>', 1]], '', 'edit')

表示status字段大于1时,不显示编辑按钮。

EGT:大于等于(>=)" class="reference-link">EGT:大于等于(>=)

  1. ->replaceRightButton(['status' => ['egt', 1]], '', 'edit')
  2. ->replaceRightButton(['status' => ['>=', 1]], '', 'edit')

表示status字段大于等于1时,不显示编辑按钮。

LT:小于(<)

  1. ->replaceRightButton(['status' => ['lt', 1]], '', 'edit')
  2. ->replaceRightButton(['status' => ['<', 1]], '', 'edit')

表示status字段小于1时,不显示编辑按钮。

>ELT: 小于等于(<=)

  1. ->replaceRightButton(['status' => ['elt', 1]], '', 'edit')
  2. ->replaceRightButton(['status' => ['<=', 1]], '', 'edit')

表示status字段小于等于1时,不显示编辑按钮。

[NOT] BETWEEN : (不在)区间查询

支持字符串或者数组,例如:

  1. ->replaceRightButton(['status' => ['between', '0,8']], '', 'edit')

和下面的等效:

  1. ->replaceRightButton(['status' => ['between', [0, 8]]], '', 'edit')

表示status字段在0到8之间时,不显示编辑按钮。

  1. ->replaceRightButton(['status' => ['not between', '0,8']], '', 'edit')
  2. ->replaceRightButton(['status' => ['not between', [0, 8]]], '', 'edit')

表示status字段不在0到8之间时,不显示编辑按钮。

[NOT] IN:(不在)IN 查询

支持字符串或者数组,例如:

  1. ->replaceRightButton(['status' => ['in', '1,5,8']], '', 'edit')

和下面的等效:

  1. ->replaceRightButton(['status' => ['in', [1,5,8]]], '', 'edit')

表示status字段为1或5或8时,不显示编辑按钮。

  1. ->replaceRightButton(['status' => ['not in', '1,5,8']], '', 'edit')
  2. ->replaceRightButton(['status' => ['not in', [1,5,8]]], '', 'edit')

表示status字段不是1或5或8时,不显示编辑按钮。

或的用法

  1. ->replaceRightButton(['status' => 1], '', 'delete')
  2. ->replaceRightButton(['status' => 0], '', 'delete')

表示status字段为1或者0,不显示删除按钮,可以使用一条语句完成相同的效果。

  1. ->replaceRightButton(['status' => ['in', '0,1']], '', 'delete')

且的用法

  1. ->replaceRightButton(['status' => 1,, 'nickname' => 'ming'], '', 'delete')

表示status字段为1并且nickname字段为ming时,不显示删除按钮。

高级用法

如果以上用法还不符合需求,可以自定义函数处理,返回true表示替换,返回fale表示不替换。

  1. ->replaceRightButton(function ($data){
  2. return $data['status'] == 0;
  3. }, '', 'delete')

表示当status字段的值为0时,不显示删除按钮。

其中,$data是当前行的所有字段数据。

替换内容支持数据变量(1.4.2+)

有时候我们希望替换内容是一个按钮或者一个链接,又想获取当前数据的id或者其他字段,那么可以使用__字段名__来获取。

  1. ->replaceRightButton(['status' => 1], '<button data-id="__id__">禁止操作</button>')