使用cloneblock-phpword生成克隆后替换块的内容

xmd2e60i  于 2021-06-15  发布在  Mysql
关注(0)|答案(1)|浏览(966)

有人能告诉我在phpword中使用cloneblock的语法吗。
所以我在mysql数据库中得到了数据,对于我需要通过phpword导入word文档的单行,它工作得很好……运行我的查询和搜索,并用模板处理器替换。但是,现在我想在word文档中插入多行。我研究发现cloneblock方法就是答案。但是我不能让它工作…目前我的代码运行,但它似乎没有到达第二行。
实际上我没有收到任何错误信息。我的代码执行得很好…但是最后显示的word文件显示得不好…如果你看到我的代码,我得到了一个echo语句…它在我的浏览器中显示的正是我想要的“损坏的”和“良好的”(作为一个行数据的例子),但是数据不会像那样拉入我的word文档…它复制了“损坏的”,“损坏的”。

$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);
chy5wohz

chy5wohz1#

我做了调查,找到了解决办法。
您正在克隆相同的块n次:
$templateprocessor->cloneblock('cloneme',$trailer\u count);
然后做你想换的东西 right_trailer_tyre_condition 有一些价值:

$templateProcessor->setValue("right_trailer_tyre_condition", $rttc);

问题是,你是replacingall占位符。
但事实上,你需要用不同的值一个接一个地替换它们。
解决方案是定义第三个参数,它表示要替换的项的计数。
只需将其更改为:

$templateProcessor->setValue("right_trailer_tyre_condition", $rttc, 1);

相关问题