使用 cloneBlock 生成克隆后替换块的内容 - PHPWord
Replacing content of block after generating clones using cloneBlock - PHPWord
谁能告诉我在 phpword 中使用 cloneblock 的语法。
所以我在 MySQL 数据库中获得了数据,对于我需要通过 phpword 导入到我的 word 文档中的单行,它工作正常....对 运行 我的查询和搜索并替换为模板处理器。但是,现在我想在我的 word 文档中插入多行。我研究过并发现 cloneblock 方法就是答案。但是我无法让它工作....目前我的代码 运行s 但它似乎没有到达第二行。
我实际上没有收到任何错误消息。我的代码执行得很好……但是最后显示的字文件显示不正常……如果你看到我的代码,我得到了一个回声语句……我的浏览器中的回声正是我想要的 "damaged" &"good",(作为行数据之一的示例)但是该数据不会像那样被拉入我的 word 文档中......它重复 "damaged" , "damaged" . .
$group_key=1;
do {
//loop to increase my uuid - ($repeatgroup')
$repeatgroup = $id."/"."trailer_repeat_group"."[".$group_key."]";
// query string
$trailer_repeat_grouping = mysqli_query($connect, "SELECT * FROM trailer_repeat_group LEFT JOIN main on trailer_repeat_group.PARENT_KEY = main.metainstanceID WHERE trailer_repeat_group.KEY_id = '$repeatgroup'");
$templateProcessor->cloneBlock('CLONEME', $trailer_count);
while ($row1 = mysqli_fetch_array($trailer_repeat_grouping)) {
//this echo below I am using to test exactly what happends – independent of
//PHPword/templateprocessor
echo $rttc = $row1['right_trailer_tyre_condition'];
//inserting / searching / inserting values
$templateProcessor->setValue("right_trailer_tyre_condition", $rttc);
}
// ending of loop / checking loop
$group_key++;
} while ($group_key <= $trailer_count);
我已经调查并找到了解决方案。
您正在克隆 相同的块N 次:
$templateProcessor->cloneBlock('CLONEME', $trailer_count);
然后通过获取你试图用一些值替换 right_trailer_tyre_condition
:
$templateProcessor->setValue("right_trailer_tyre_condition", $rttc);
问题是您正在 替换 所有占位符。
但实际上您需要用不同值替换它们一个。
解决方案是定义第三个参数,这意味着要替换的项目数。
只需将其更改为:
$templateProcessor->setValue("right_trailer_tyre_condition", $rttc, 1);
谁能告诉我在 phpword 中使用 cloneblock 的语法。
所以我在 MySQL 数据库中获得了数据,对于我需要通过 phpword 导入到我的 word 文档中的单行,它工作正常....对 运行 我的查询和搜索并替换为模板处理器。但是,现在我想在我的 word 文档中插入多行。我研究过并发现 cloneblock 方法就是答案。但是我无法让它工作....目前我的代码 运行s 但它似乎没有到达第二行。
我实际上没有收到任何错误消息。我的代码执行得很好……但是最后显示的字文件显示不正常……如果你看到我的代码,我得到了一个回声语句……我的浏览器中的回声正是我想要的 "damaged" &"good",(作为行数据之一的示例)但是该数据不会像那样被拉入我的 word 文档中......它重复 "damaged" , "damaged" . .
$group_key=1;
do {
//loop to increase my uuid - ($repeatgroup')
$repeatgroup = $id."/"."trailer_repeat_group"."[".$group_key."]";
// query string
$trailer_repeat_grouping = mysqli_query($connect, "SELECT * FROM trailer_repeat_group LEFT JOIN main on trailer_repeat_group.PARENT_KEY = main.metainstanceID WHERE trailer_repeat_group.KEY_id = '$repeatgroup'");
$templateProcessor->cloneBlock('CLONEME', $trailer_count);
while ($row1 = mysqli_fetch_array($trailer_repeat_grouping)) {
//this echo below I am using to test exactly what happends – independent of
//PHPword/templateprocessor
echo $rttc = $row1['right_trailer_tyre_condition'];
//inserting / searching / inserting values
$templateProcessor->setValue("right_trailer_tyre_condition", $rttc);
}
// ending of loop / checking loop
$group_key++;
} while ($group_key <= $trailer_count);
我已经调查并找到了解决方案。
您正在克隆 相同的块N 次:
$templateProcessor->cloneBlock('CLONEME', $trailer_count);
然后通过获取你试图用一些值替换 right_trailer_tyre_condition
:
$templateProcessor->setValue("right_trailer_tyre_condition", $rttc);
问题是您正在 替换 所有占位符。
但实际上您需要用不同值替换它们一个。
解决方案是定义第三个参数,这意味着要替换的项目数。
只需将其更改为:
$templateProcessor->setValue("right_trailer_tyre_condition", $rttc, 1);