使用 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);