如何在渲染输出的整个表格前添加Tab制表符缩进?
TabularDisplay整表前置制表符实现方案
直接在print $table->render;前拼接制表符仅对第一行生效,是因为render返回的是包含换行符的多行字符串,前置拼接的字符只会出现在整个字符串的最开头,不会自动加到每一个换行后的行首。
方案1:输出前批量处理渲染结果
拿到渲染后的完整字符串后,按换行符拆分给每一行单独拼接制表符,再合并输出即可:
$rawTable = $table->render; // 拆分所有行,逐行加制表符后重新拼接 $indentedTable = array_reduce( explode(PHP_EOL, $rawTable), function($carry, $line) { // 空行不添加制表符,不需要该逻辑可直接返回 "\t" . $line . PHP_EOL return $carry . (trim($line) ? "\t" : '') . $line . PHP_EOL; }, '' ); print rtrim($indentedTable, PHP_EOL);
方案2:通过表格类的行回调配置实现
如果使用的TabularDisplay版本支持自定义行渲染钩子,优先用该方式,不会影响单元格内部的换行内容:
// 配置每行渲染时自动前置制表符 $table->onRowRender(function($rowContent) { return "\t" . $rowContent; }); print $table->render;
提示:不同版本的TabularDisplay行回调方法名可能存在差异,可以查阅对应版本的类文档确认
setRowFormatter/addRowDecorator之类的行修饰方法。
内容的提问来源于stack exchange,提问作者Neha Sharma
相关产品推荐
相关产品推荐

