🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
## 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>') ~~~ >[info] ### 从1.0.5版本开始,增强了条件判断,并支持替换指定按钮 比如: ~~~ ->replaceRightButton(['status' => ['in', '0,1']], '', 'edit,delete') ~~~ 表示当status字段为0或者1,则将编辑按钮和删除按钮替换为空,即不显示这两个按钮。 也可以这样写: ~~~ ->replaceRightButton(['status' => ['in', '0,1']], '', ['edit', 'delete']) ~~~ >[info] 提示:如果不指定替换的按钮,则默认替换所有按钮。 ~~~ ->replaceRightButton(['status' => 1], '') ~~~ 表示如果status为1,则不显示所有按钮。 >[danger] 注意,以上的例子指定了替换编辑按钮和删除按钮,也就是需要添加这两个按钮,判断才起作用。 **`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:大于等于(>=) ~~~ ->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>') ```