设置搜索参数
setSearch('字段名' [, '提示', '提交地址', '提交按钮文字'])
| 版本 | 新增功能 |
|---|---|
| 1.0.7 | 表格搜素框添加搜索按钮,可配置显示不显示 |
默认情况下,数据表格是没有搜索功能的,如果需要搜索功能,可以设置搜索参数。
格式为:['字段名' => '字段提示']
// 使用ZBuilder快速创建数据表格return ZBuilder::make('table')->setSearch(['id' => 'ID', 'username' => '用户名', 'email' => '邮箱']) // 设置搜索参数->fetch(); // 渲染页面
数据表格右上角会出现搜索框

搜索功能要配合$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();
此处的搜索是模糊搜索
字段名
如果数据是从视图查询得到的,也就是要搜索的字段在其他表,则必须写明表名。
->setSearch(['id' => 'ID', 'admin_user.username' => '用户名', 'email' => '邮箱']) // 设置搜索参数
以上表示用户名字段在admin_user表。
从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(); // 渲染页面
提交按钮文字
从1.0.7版本开始,可设置搜索框的提交按钮,默认为不显示按钮,如果需要显示按钮,可以设置为
true或者具体的提示文字。
// 使用ZBuilder快速创建数据表格return ZBuilder::make('table')->setSearch(['id' => 'ID', 'username' => '用户名', 'email' => '邮箱'], '', '', true) // 设置搜索参数->fetch(); // 渲染页面

设置为true,则按钮的默认文字为“搜索”,如果需要修改文字,可以直接设置文字。
// 使用ZBuilder快速创建数据表格return ZBuilder::make('table')->setSearch(['id' => 'ID', 'username' => '用户名', 'email' => '邮箱'], '', '', '立即搜索') // 设置搜索参数->fetch(); // 渲染页面

除此之外,如果需要将所有页面的搜索框一次性配置上按钮,可修改文件:
\application\extra\zbuilder.php
中的search_button参数,false表示不显示按钮。
注意:配置文件的优先级低于setSearch()方法
