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(); // 渲染页面
除此之外,如果需要将所有页面的搜索框一次性配置上按钮,可修改文件:
applicationextrazbuilder.php
中的search_button
参数,false表示不显示按钮。
注意:配置文件的优先级低于setSearch()方法