添加行class名

添加行class名 (1.0.5+)

1.0.5开始支持按条件给某一行加class名。

基本用法:

  1. ->addTrClass('class名', '字段名', '表达式', '对比条件')

本方法的用法和ThinkPHP的where查询类似,比如希望status字段为1时,给所在行添加一个名为success的行class。

  1. ->addTrClass('success', 'status', '=', 1)

等同于

  1. ->addTrClass('success', 'status', 'eq', 1)

也等同于

  1. ->addTrClass('success', 'status', 1)

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

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

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

EQ :等于(=)

  1. ->addTrClass('success', 'status', 'eq', 1)
  2. ->addTrClass('success', 'status', '=', 1)
  3. ->addTrClass('success', 'status', 1)

表示status字段等于1时,tr标签添加success类名。

NEQ: 不等于(<>)

  1. ->addTrClass('success', 'status', 'neq', 1)
  2. ->addTrClass('success', 'status', '<>', 1)

表示status字段不等于1时,tr标签添加success类名。

GT:大于(>)

  1. ->addTrClass('success', 'status', 'gt', 1)
  2. ->addTrClass('success', 'status', '>', 1)

表示status字段大于1时,tr标签添加success类名。

EGT:大于等于(>=)

  1. ->addTrClass('success', 'status', 'egt', 1)
  2. ->addTrClass('success', 'status', '>=', 1)

表示status字段大于等于1时,tr标签添加success类名。

LT:小于(<)

  1. ->addTrClass('success', 'status', 'lt', 1)
  2. ->addTrClass('success', 'status', '<', 1)

表示status字段小于1时,tr标签添加success类名。

ELT: 小于等于(<=)

  1. ->addTrClass('success', 'status', 'elt', 1)
  2. ->addTrClass('success', 'status', '<=', 1)

表示status字段小于等于1时,tr标签添加success类名。

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

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

  1. ->addTrClass('success', 'status', 'between', '0,8')

和下面的等效:

  1. ->addTrClass('success', 'status', 'between', [0,8])

表示status字段在0到8之间时,tr标签添加success类名。

  1. ->addTrClass('success', 'status', 'not between', '0,8')
  2. ->addTrClass('success', 'status', 'not between', [0,8])

表示status字段不在0到8之间时,tr标签添加success类名。

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

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

  1. ->addTrClass('success', 'status', 'in', '1,5,8')

和下面的等效:

  1. ->addTrClass('success', 'status', 'in', [1,5,8])

表示status字段为1或5或8时,tr标签添加success类名。

  1. ->addTrClass('success', 'status', 'not in', '1,5,8')
  2. ->addTrClass('success', 'status', 'not in', [1,5,8])

表示status字段不是1或5或8时,tr标签添加success类名。

类名可指定多个

  1. ->addTrClass('success', 'status', 0)
  2. ->addTrClass('warning', 'status', 0)

表示status字段为0时,tr标签添加successwarning类名。

与下面的写法效果相同,但更简洁:

  1. ->addTrClass('success warning', 'status', 0)

如果同一个类名出现多次,则表示需要符合所有条件才会添加。

  1. ->addTrClass('success', 'status', 1)
  2. ->addTrClass('success', 'nickname', 'ming')

表示status字段为1并且nickname字段为ming时,tr标签添加success类名。

注意,请避免条件冲突的情况,比如下面的

  1. ->addTrClass('success', 'status', 1)
  2. ->addTrClass('success', 'status', 0)

表示status字段为1并且为0时,tr标签添加success类名。这明显是无效的,因为status字段不可能同时满足这两个条件。

高级用法

如果以上用法还不满足需求,可以使用高级方法,自己定义一个方法来处理,只要结果返回true则表示添加对应的类名,返回false则不添加。

  1. ->addTrClass('warning', function ($data) {
  2. return $data['status'] == 1 ? true : false;
  3. })

该方法有一个变量,是当前行的所有字段数据。以上表示字段status为1时,tr标签添加warning类名,否则不添加。

提示:不建议在方法内进行数据库查询操作,避免频繁读取,可以通过外部传入参数的方式。

  1. $list_status = ['a', 'b', 'c'];
  2. ->addTrClass('warning', function ($data, $list_status) {
  3. return $data['status'] == 1 ? true : false;
  4. }, $list_status)