设置搜索区域(1.1.0+)

setSearchArea(搜索参数, 提交地址)

从V1.1.0版本开始,支持设置搜索区域,目前支持以下类型:

类型标识符
单行文本框text
下拉框select
日期时间datetime

用法如下:

  1. ->setSearchArea([
  2. ['text', 'username', '昵称'],
  3. ])

不管是哪种类型,前面五个参数的含义是相同的

第一个参数:类型

第二个参数:字段名

第三个参数:标签名

第四个参数:匹配方式(默认为“eq”,也可以是“neq”,“=”,“<>”等等)

第五个参数:默认值

第六个参数:额外参数(不同类型,用途不同)

text(单行文本框)

一般用法

  1. ->setSearchArea([
  2. ['text', 'username', '昵称'],
  3. ])

默认的匹配方式是“eq”,也就是等于,如果需要修改为不等于,可以明确指定

  1. ->setSearchArea([
  2. ['text', 'username', '昵称', 'neq'],
  3. ])

改为模糊匹配

  1. ->setSearchArea([
  2. ['text', 'username', '昵称', 'like'],
  3. ])

也可以设置默认值

  1. ->setSearchArea([
  2. ['text', 'username', '昵称', '', 'ming'],
  3. ])

需要注意的是,这里的默认值仅用于默认显示在单行文本框内,并不会默认按这个值搜索,需要自行在查询数据时带入默认值。

  1. $map = $this->getMap();
  2. if (!isset($map['username'])) {
  3. $map['username'] = 'ming';
  4. }
  5. $data = User::where($map)->paginate();
  6. return ZBuilder::make('table')
  7. ->addColumns([ // 批量添加列
  8. ['id', 'ID'],
  9. ['username', '用户名'],
  10. ['nickname', '昵称'],
  11. ['email', '邮箱'],
  12. ['mobile', '手机号'],
  13. ['create_time', '创建时间', 'datetime'],
  14. ['status', '状态', 'switch'],
  15. ['right_button', '操作', 'btn']
  16. ])
  17. ->setSearchArea([
  18. ['text', 'username', '昵称', '', 'ming'],
  19. ])
  20. ->fetch();

默认每个组件的宽度是占1/4,也可以自己设置

  1. ->setSearchArea([
  2. ['text:6', 'username', '昵称', 'neq'],
  3. ])

如果数据是使用【视图查询】获得的,有时候需要指定表名

  1. ->setSearchArea([
  2. ['text', 'admin_user.username', '昵称'],
  3. ])

select(下拉框)

一般用法,第六个参数传入一个一维数组。

  1. ->setSearchArea([
  2. ['select', 'username', '用户名', '', '', ['test' => 'test', 'ming' => 'ming']],
  3. ])

设置默认值

  1. ->setSearchArea([
  2. ['select', 'username', '用户名', '', 'test', ['test' => 'test', 'ming' => 'ming']],
  3. ])

设置宽度

  1. ->setSearchArea([
  2. ['select:4', 'username', '用户名', '', '', ['test' => 'test', 'ming' => 'ming']],
  3. ])

指定表名

  1. ->setSearchArea([
  2. ['select', 'admin_user.username', '用户名', '', '', ['test' => 'test', 'ming' => 'ming']],
  3. ])

daterange(日期范围)

一般用法

  1. ->setSearchArea([
  2. ['daterange', 'create_time', '创建时间'],
  3. ])

修改匹配方式

默认匹配方式为在某个时间段内,也可以设置为不在某个时间段内

  1. ->setSearchArea([
  2. ['daterange', 'create_time', '创建时间', 'not between'],
  3. ])

设置默认值

  1. ->setSearchArea([
  2. ['daterange', 'create_time', '创建时间', '', '2017-11-10 - 2017-11-15'],
  3. ])

这里的默认值仅作为显示,默认查询数据时,需要自行添加默认值查询,具体请参考上的“text”类型用法。

设置时间格式

  1. ->setSearchArea([
  2. ['daterange', 'create_time', '创建时间', '', '', ['format' => 'YYYY-MM-DD HH:mm']],
  3. ])

更多格式请参考 momentjs

设置可选日期范围

  1. ->setSearchArea([
  2. ['daterange', 'create_time', '创建时间', '', '', ['min-date' => '2017-11-01', 'max-date' => '2017-12-30']],
  3. ])

表示用户只能在2017-11-01至2017-12-30之间选择。

开启时间选择

默认情况下,时间选择是没有开启的,如果需要开启时间选择,可以设置为

  1. ->setSearchArea([
  2. ['daterange', 'create_time', '创建时间', '', '', ['time-picker' => 'true']],
  3. ])

开启时间选择后,默认不是24小时制,如果需要设置为24小时制,设置为

  1. ->setSearchArea([
  2. ['daterange', 'create_time', '创建时间', '', '', ['time-picker' => 'true', 'time-picker24-hour' => 'true']],
  3. ])

如果需要精确到秒,可以设置为

  1. ->setSearchArea([
  2. ['daterange', 'create_time', '创建时间', '', '', ['time-picker' => 'true', 'time-picker24-hour' => 'true', 'time-picker-seconds' => 'true']],
  3. ])

更多参数请参考http://www.daterangepicker.com/#options

比如要设置参数“maxDate”,那么填写的时候要填写为“max-date”这种方式。