替换右侧按钮
replaceRightButton('匹配条件', '最终要替换的内容', '目标按钮')
| 版本 | 新增功能 |
|---|---|
| 1.0.5 | 增强条件判断,支持替换指定按钮 |
| 1.4.2 | 替换内容支持数据变量 |
如果要修改某些数据的右侧按钮,比如,管理员用户组不给用户操作,只显示一个不可操作的按钮。
->replaceRightButton(['id' => 1], '<button class="btn btn-danger btn-xs" type="button" disabled>不可操作</button>') // 修改id为1的按钮
上面的代码是将id字段为1的数据,右侧按钮替换为”不可操作“;
设置多个匹配条件
->replaceRightButton(['id' => 1, 'status' => 1], '<button class="btn btn-danger btn-xs" type="button" disabled>不可操作</button>') // 修改id为1的按钮
表示id字段为1并且status字段为1的数据,右侧按钮替换为”不可操作“;
设置多个替换规则
->replaceRightButton(['id' => 1], '<button class="btn btn-danger btn-xs" type="button" disabled>不可操作</button>')->replaceRightButton(['id' => 2], '<button class="btn btn-danger btn-xs" type="button" disabled>可操作</button>')
从1.0.5版本开始,增强了条件判断,并支持替换指定按钮
比如:
->replaceRightButton(['status' => ['in', '0,1']], '', 'edit,delete')
表示当status字段为0或者1,则将编辑按钮和删除按钮替换为空,即不显示这两个按钮。
也可以这样写:
->replaceRightButton(['status' => ['in', '0,1']], '', ['edit', 'delete'])
提示:如果不指定替换的按钮,则默认替换所有按钮。
->replaceRightButton(['status' => 1], '')
表示如果status为1,则不显示所有按钮。
注意,以上的例子指定了替换编辑按钮和删除按钮,也就是需要添加这两个按钮,判断才起作用。
replaceRightButton方法的第一个参数是判断条件,基本使用方法如下:
['字段名' => ['表达式', '对比条件']]
表达式不分大小写,支持的查询表达式有下面几种,分别表示的含义是:
| 表达式 | 含义 |
|---|---|
| EQ、= | 等于(=) |
| NEQ、<> | 不等于(<>) |
| GT、> | 大于(>) |
| EGT、>= | 大于等于(>=) |
| LT、< | 小于(<) |
| ELT、<= | 小于等于(<=) |
| [NOT] BETWEEN | (不在)区间查询 |
| [NOT] IN | (不在)IN 查询 |
表达式查询的用法示例如下:
EQ :等于(=)
->replaceRightButton(['status' => 1], '', 'edit')->replaceRightButton(['status' => ['eq', 1]], '', 'edit')->replaceRightButton(['status' => ['=', 1]], '', 'edit')
表示status字段等于1时,不显示编辑按钮。
NEQ: 不等于(<>)
->replaceRightButton(['status' => ['neq', 1]], '', 'edit')->replaceRightButton(['status' => ['<>', 1]], '', 'edit')
表示status字段不等于1时,不显示编辑按钮。
GT:大于(>)
->replaceRightButton(['status' => ['gt', 1]], '', 'edit')->replaceRightButton(['status' => ['>', 1]], '', 'edit')
表示status字段大于1时,不显示编辑按钮。
EGT:大于等于(>=)" class="reference-link">EGT:大于等于(>=)
->replaceRightButton(['status' => ['egt', 1]], '', 'edit')->replaceRightButton(['status' => ['>=', 1]], '', 'edit')
表示status字段大于等于1时,不显示编辑按钮。
LT:小于(<)
->replaceRightButton(['status' => ['lt', 1]], '', 'edit')->replaceRightButton(['status' => ['<', 1]], '', 'edit')
表示status字段小于1时,不显示编辑按钮。
>ELT: 小于等于(<=)
->replaceRightButton(['status' => ['elt', 1]], '', 'edit')->replaceRightButton(['status' => ['<=', 1]], '', 'edit')
表示status字段小于等于1时,不显示编辑按钮。
[NOT] BETWEEN : (不在)区间查询
支持字符串或者数组,例如:
->replaceRightButton(['status' => ['between', '0,8']], '', 'edit')
和下面的等效:
->replaceRightButton(['status' => ['between', [0, 8]]], '', 'edit')
表示status字段在0到8之间时,不显示编辑按钮。
->replaceRightButton(['status' => ['not between', '0,8']], '', 'edit')->replaceRightButton(['status' => ['not between', [0, 8]]], '', 'edit')
表示status字段不在0到8之间时,不显示编辑按钮。
[NOT] IN:(不在)IN 查询
支持字符串或者数组,例如:
->replaceRightButton(['status' => ['in', '1,5,8']], '', 'edit')
和下面的等效:
->replaceRightButton(['status' => ['in', [1,5,8]]], '', 'edit')
表示status字段为1或5或8时,不显示编辑按钮。
->replaceRightButton(['status' => ['not in', '1,5,8']], '', 'edit')->replaceRightButton(['status' => ['not in', [1,5,8]]], '', 'edit')
表示status字段不是1或5或8时,不显示编辑按钮。
或的用法
->replaceRightButton(['status' => 1], '', 'delete')->replaceRightButton(['status' => 0], '', 'delete')
表示status字段为1或者0,不显示删除按钮,可以使用一条语句完成相同的效果。
->replaceRightButton(['status' => ['in', '0,1']], '', 'delete')
且的用法
->replaceRightButton(['status' => 1,, 'nickname' => 'ming'], '', 'delete')
表示status字段为1并且nickname字段为ming时,不显示删除按钮。
高级用法
如果以上用法还不符合需求,可以自定义函数处理,返回true表示替换,返回fale表示不替换。
->replaceRightButton(function ($data){return $data['status'] == 0;}, '', 'delete')
表示当status字段的值为0时,不显示删除按钮。
其中,$data是当前行的所有字段数据。
替换内容支持数据变量(1.4.2+)
有时候我们希望替换内容是一个按钮或者一个链接,又想获取当前数据的id或者其他字段,那么可以使用__字段名__来获取。
->replaceRightButton(['status' => 1], '<button data-id="__id__">禁止操作</button>')
