## setSearch('字段名' [, '提示', '提交地址', '提交按钮文字']) | 版本 | 新增功能 | | --- | --- | | 1.0.7 | 表格搜素框添加搜索按钮,可配置显示不显示 | 默认情况下,数据表格是没有搜索功能的,如果需要搜索功能,可以设置搜索参数。 格式为:`['字段名' => '字段提示']` ~~~ // 使用ZBuilder快速创建数据表格 return ZBuilder::make('table') ->setSearch(['id' => 'ID', 'username' => '用户名', 'email' => '邮箱']) // 设置搜索参数 ->fetch(); // 渲染页面 ~~~ 数据表格右上角会出现搜索框 ![](https://box.kancloud.cn/f1fd93732b0b7daf187dd2df71aa0ea2_322x208.png) 搜索功能要配合`$this->getMap();`方法,比如 ~~~ // 获取筛选 $map = $this->getMap(); // 读取用户数据 $data_list = Db::name('admin_user')->where($map)->order($order)->select(); // 使用ZBuilder构建数据表格 return ZBuilder::make('table') ->setSearch(['id' => 'ID', 'username' => '用户名', 'email' => '邮箱']) // 设置搜索参数 ->addColumn('id', 'ID') ->addColumn('username', '用户名') ->addColumn('nickname', '昵称') ->addColumn('email', '邮箱') ->addColumn('mobile', '手机号') ->addColumn('create_time', '创建时间') ->setRowList($data_list) // 设置表格数据 ->fetch(); ~~~ >[info] 此处的搜索是模糊搜索 ### 字段名 如果数据是从视图查询得到的,也就是要搜索的字段在其他表,则必须写明表名。 ~~~ ->setSearch(['id' => 'ID', 'admin_user.username' => '用户名', 'email' => '邮箱']) // 设置搜索参数 ~~~ 以上表示用户名字段在`admin_user`表。 >[info]### 从1.0.3版本开始,支持字符串参数 比如建立以下表格 ~~~ // 使用ZBuilder构建数据表格 return ZBuilder::make('table') ->setSearch(['id' => 'ID', 'username' => '用户名', 'email' => '邮箱']) // 设置搜索参数 ->addColumn('id', 'ID') ->addColumn('username', '用户名') ->addColumn('nickname', '昵称') ->addColumn('email', '邮箱') ->addColumn('mobile', '手机号') ->addColumn('create_time', '创建时间') ->setRowList($data_list) // 设置表格数据 ->fetch(); ~~~ 我们可以看到,setSearch方法内的参数不仅要写字段名,还要写字段提示,这样比较繁琐。如果你要搜索的字段已经用addColumn或者addColumns方法定义过,那么可以这么改。 ~~~ // 使用ZBuilder构建数据表格 return ZBuilder::make('table') ->setSearch('id,username,email') // 直接写字段名 ->addColumn('id', 'ID') ->addColumn('username', '用户名') ->addColumn('nickname', '昵称') ->addColumn('email', '邮箱') ->addColumn('mobile', '手机号') ->addColumn('create_time', '创建时间') ->setRowList($data_list) // 设置表格数据 ->fetch(); ~~~ 也支持带表名的字段,比如数据是用Db::view()方法查询的情况。 ~~~ // 使用ZBuilder构建数据表格 return ZBuilder::make('table') ->setSearch('admin_user.username,admin_user.email') // 支持带表名 ->addColumn('id', 'ID') ->addColumn('username', '用户名') ->addColumn('nickname', '昵称') ->addColumn('email', '邮箱') ->addColumn('mobile', '手机号') ->addColumn('create_time', '创建时间') ->setRowList($data_list) // 设置表格数据 ->fetch(); ~~~ 如果你想重命名某个搜索字段名,可以原来的数组方式。 ~~~ // 使用ZBuilder构建数据表格 return ZBuilder::make('table') ->setSearch(['id', 'username', 'email' => '邮箱地址']) // 重命名email字段的提示 ->addColumn('id', 'ID') ->addColumn('username', '用户名') ->addColumn('nickname', '昵称') ->addColumn('email', '邮箱') ->addColumn('mobile', '手机号') ->addColumn('create_time', '创建时间') ->setRowList($data_list) // 设置表格数据 ->fetch(); ~~~ ### 提示 也可以自定义提示 ~~~ // 使用ZBuilder快速创建数据表格 return ZBuilder::make('table') ->setSearch(['id' => 'ID', 'username' => '用户名', 'email' => '邮箱'], '请输入关键字') // 设置搜索参数 ->fetch(); // 渲染页面 ~~~ ### 提交地址 默认的搜索提交地址是当前url,如果有需要,可以另外指定。 ~~~ // 使用ZBuilder快速创建数据表格 return ZBuilder::make('table') ->setSearch(['id' => 'ID', 'username' => '用户名', 'email' => '邮箱'], '请输入关键字', url('index')) // 设置搜索参数 ->fetch(); // 渲染页面 ~~~ ### 提交按钮文字 >[info] 从1.0.7版本开始,可设置搜索框的提交按钮,默认为不显示按钮,如果需要显示按钮,可以设置为`true`或者具体的提示文字。 ~~~ // 使用ZBuilder快速创建数据表格 return ZBuilder::make('table') ->setSearch(['id' => 'ID', 'username' => '用户名', 'email' => '邮箱'], '', '', true) // 设置搜索参数 ->fetch(); // 渲染页面 ~~~ ![](https://box.kancloud.cn/471eaaba3b3c559b6e668a73b1fae2a7_340x190.png) 设置为true,则按钮的默认文字为“搜索”,如果需要修改文字,可以直接设置文字。 ~~~ // 使用ZBuilder快速创建数据表格 return ZBuilder::make('table') ->setSearch(['id' => 'ID', 'username' => '用户名', 'email' => '邮箱'], '', '', '立即搜索') // 设置搜索参数 ->fetch(); // 渲染页面 ~~~ ![](https://box.kancloud.cn/8bc12d1649abe913bcf51ac23cf6cc48_347x253.png) 除此之外,如果需要将所有页面的搜索框一次性配置上按钮,可修改文件: ~~~ \application\extra\zbuilder.php ~~~ 中的`search_button`参数,false表示不显示按钮。 >[danger] 注意:配置文件的优先级低于setSearch()方法