牛骨文教育服务平台(让学习变的简单)

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()方法