设置搜索参数

setSearch('字段名' [, '提示', '提交地址', '提交按钮文字'])

版本新增功能
1.0.7表格搜素框添加搜索按钮,可配置显示不显示

默认情况下,数据表格是没有搜索功能的,如果需要搜索功能,可以设置搜索参数。

格式为:['字段名' => '字段提示']

  1. // 使用ZBuilder快速创建数据表格
  2. return ZBuilder::make('table')
  3. ->setSearch(['id' => 'ID', 'username' => '用户名', 'email' => '邮箱']) // 设置搜索参数
  4. ->fetch(); // 渲染页面

数据表格右上角会出现搜索框

设置搜索参数 - 图1

搜索功能要配合$this->getMap();方法,比如

  1. // 获取筛选
  2. $map = $this->getMap();
  3. // 读取用户数据
  4. $data_list = Db::name('admin_user')->where($map)->order($order)->select();
  5. // 使用ZBuilder构建数据表格
  6. return ZBuilder::make('table')
  7. ->setSearch(['id' => 'ID', 'username' => '用户名', 'email' => '邮箱']) // 设置搜索参数
  8. ->addColumn('id', 'ID')
  9. ->addColumn('username', '用户名')
  10. ->addColumn('nickname', '昵称')
  11. ->addColumn('email', '邮箱')
  12. ->addColumn('mobile', '手机号')
  13. ->addColumn('create_time', '创建时间')
  14. ->setRowList($data_list) // 设置表格数据
  15. ->fetch();

此处的搜索是模糊搜索

字段名

如果数据是从视图查询得到的,也就是要搜索的字段在其他表,则必须写明表名。

  1. ->setSearch(['id' => 'ID', 'admin_user.username' => '用户名', 'email' => '邮箱']) // 设置搜索参数

以上表示用户名字段在admin_user表。

从1.0.3版本开始,支持字符串参数

比如建立以下表格

  1. // 使用ZBuilder构建数据表格
  2. return ZBuilder::make('table')
  3. ->setSearch(['id' => 'ID', 'username' => '用户名', 'email' => '邮箱']) // 设置搜索参数
  4. ->addColumn('id', 'ID')
  5. ->addColumn('username', '用户名')
  6. ->addColumn('nickname', '昵称')
  7. ->addColumn('email', '邮箱')
  8. ->addColumn('mobile', '手机号')
  9. ->addColumn('create_time', '创建时间')
  10. ->setRowList($data_list) // 设置表格数据
  11. ->fetch();

我们可以看到,setSearch方法内的参数不仅要写字段名,还要写字段提示,这样比较繁琐。如果你要搜索的字段已经用addColumn或者addColumns方法定义过,那么可以这么改。

  1. // 使用ZBuilder构建数据表格
  2. return ZBuilder::make('table')
  3. ->setSearch('id,username,email') // 直接写字段名
  4. ->addColumn('id', 'ID')
  5. ->addColumn('username', '用户名')
  6. ->addColumn('nickname', '昵称')
  7. ->addColumn('email', '邮箱')
  8. ->addColumn('mobile', '手机号')
  9. ->addColumn('create_time', '创建时间')
  10. ->setRowList($data_list) // 设置表格数据
  11. ->fetch();

也支持带表名的字段,比如数据是用Db::view()方法查询的情况。

  1. // 使用ZBuilder构建数据表格
  2. return ZBuilder::make('table')
  3. ->setSearch('admin_user.username,admin_user.email') // 支持带表名
  4. ->addColumn('id', 'ID')
  5. ->addColumn('username', '用户名')
  6. ->addColumn('nickname', '昵称')
  7. ->addColumn('email', '邮箱')
  8. ->addColumn('mobile', '手机号')
  9. ->addColumn('create_time', '创建时间')
  10. ->setRowList($data_list) // 设置表格数据
  11. ->fetch();

如果你想重命名某个搜索字段名,可以原来的数组方式。

  1. // 使用ZBuilder构建数据表格
  2. return ZBuilder::make('table')
  3. ->setSearch(['id', 'username', 'email' => '邮箱地址']) // 重命名email字段的提示
  4. ->addColumn('id', 'ID')
  5. ->addColumn('username', '用户名')
  6. ->addColumn('nickname', '昵称')
  7. ->addColumn('email', '邮箱')
  8. ->addColumn('mobile', '手机号')
  9. ->addColumn('create_time', '创建时间')
  10. ->setRowList($data_list) // 设置表格数据
  11. ->fetch();

提示

也可以自定义提示

  1. // 使用ZBuilder快速创建数据表格
  2. return ZBuilder::make('table')
  3. ->setSearch(['id' => 'ID', 'username' => '用户名', 'email' => '邮箱'], '请输入关键字') // 设置搜索参数
  4. ->fetch(); // 渲染页面

提交地址

默认的搜索提交地址是当前url,如果有需要,可以另外指定。

  1. // 使用ZBuilder快速创建数据表格
  2. return ZBuilder::make('table')
  3. ->setSearch(['id' => 'ID', 'username' => '用户名', 'email' => '邮箱'], '请输入关键字', url('index')) // 设置搜索参数
  4. ->fetch(); // 渲染页面

提交按钮文字

从1.0.7版本开始,可设置搜索框的提交按钮,默认为不显示按钮,如果需要显示按钮,可以设置为true或者具体的提示文字。

  1. // 使用ZBuilder快速创建数据表格
  2. return ZBuilder::make('table')
  3. ->setSearch(['id' => 'ID', 'username' => '用户名', 'email' => '邮箱'], '', '', true) // 设置搜索参数
  4. ->fetch(); // 渲染页面

设置搜索参数 - 图2

设置为true,则按钮的默认文字为“搜索”,如果需要修改文字,可以直接设置文字。

  1. // 使用ZBuilder快速创建数据表格
  2. return ZBuilder::make('table')
  3. ->setSearch(['id' => 'ID', 'username' => '用户名', 'email' => '邮箱'], '', '', '立即搜索') // 设置搜索参数
  4. ->fetch(); // 渲染页面

设置搜索参数 - 图3

除此之外,如果需要将所有页面的搜索框一次性配置上按钮,可修改文件:

  1. \application\extra\zbuilder.php

中的search_button参数,false表示不显示按钮。

注意:配置文件的优先级低于setSearch()方法