回调方法
如果某些字段的值需要特别处理,可以设置回调方法。
// 使用ZBuilder构建数据表格
return ZBuilder::make("table")
->addColumn("create_time", "创建时间", "callback", "format_time")
->fetch();
回调有以下几种用法
1.输入有效的函数
// 使用ZBuilder构建数据表格
return ZBuilder::make("table")
->addColumn("create_time", "创建时间", "callback", "format_time")
->fetch();
其中format_time
是一个有效的函数。
系统默认会将该字段值传入到指定的回调方法内
也可以添加额外参数
// 使用ZBuilder构建数据表格
return ZBuilder::make("table")
->addColumn("create_time", "创建时间", "callback", "format_time", "Y-m-d")
->fetch();
其中,"Y-m-d"会被当作第二参数传入函数format_time
内。
额外参数也可以是一个变量。
$format = "Y-m-d";
// 使用ZBuilder构建数据表格
return ZBuilder::make("table")
->addColumn("create_time", "创建时间", "callback", "format_time", $format)
->fetch();
2.使用匿名函数
// 使用ZBuilder构建数据表格
return ZBuilder::make("table")
->addColumn("create_time", "创建时间", "callback", function($value){
return format_time($value);
})
->fetch();
使用匿名函数时,可以定义一个参数来接收字段值。该匿名函数要有返回值,否则页面不显示该字段的值。
也可以不接收字段值,而直接返回数据。
// 使用ZBuilder构建数据表格
return ZBuilder::make("table")
->addColumn("create_time", "创建时间", "callback", function(){
return "禁止查看";
})
->fetch();
匿名函数同样可以接收第二个参数
// 使用ZBuilder构建数据表格
return ZBuilder::make("table")
->addColumn("create_time", "创建时间", "callback", function($value, $format){
return format_time($value, $format); // $format 在这里的值是“Y-m”
}, "Y-m")
->fetch();
提示:如果额外参数是
__data__
,则会把整行数据当做第二个参数传给回调方法
比如我们希望在create_time的回调方法内,能接收到其他字段的值。
// 使用ZBuilder构建数据表格
return ZBuilder::make("table")
->addColumn("name", "用户名")
->addColumn("create_time", "创建时间", "callback", function($value, $data){
return $data["name"]; // 可以用$data接收到其他字段的数据
}, "__data__")
->fetch();
3.以数组方式输入对象和方法
// 使用ZBuilder构建数据表格
return ZBuilder::make("table")
->addColumn("create_time", "创建时间", "callback", [$this, "format_time"]) // 表示执行当前对象的format_time方法,并将值传入format_time方法中
->fetch();
也可以传入额外参数
// 使用ZBuilder构建数据表格
return ZBuilder::make("table")
->addColumn("create_time", "创建时间", "callback", [$this, "format_time"], "Y-m")
->fetch();
或者传入变量
$format = "Y-m";
// 使用ZBuilder构建数据表格
return ZBuilder::make("table")
->addColumn("create_time", "创建时间", "callback", [$this, "format_time"], $format)
->fetch();
建议不要在回调方法内去查询数据库,这样会造成频繁访问数据库
支持传入任意个参数(1.0.3+)
从1.0.3版本开始,“callback”支持传入任意个参数。
// 使用ZBuilder构建数据表格
return ZBuilder::make("table")
->addColumn("create_time", "创建时间", "callback", function($value, $a, $b, $c){
// $value 字段create_time的值
// $a的值为“参数1”
// $b的值为“参数2”
// $c的值为“参数3”
}, "参数1", "参数2", "参数3")
->fetch();
__data__
可以放在任意位置。
// 使用ZBuilder构建数据表格
return ZBuilder::make("table")
->addColumn("create_time", "创建时间", "callback", function($value, $a, $b, $c){
// $value 字段create_time的值
// $a的值为“参数1”
// $b的值为“参数2”
// $c的值为当前行的所有字段值
}, "参数1", "参数2", "__data__")
->fetch();
如果某些字段是不存在的,使用callback时,无需接收该字段的变量。
// 使用ZBuilder构建数据表格
return ZBuilder::make("table")
->addColumn("create_at", "创建时间", "callback", function($data){
// create_at字段是不存在的,所以匿名函数的不用再定义一个$value变量来接收值
}, "__data__")
->fetch();