使用cloneBlock-PHPWord

时间:2018-12-24 18:12:12

标签: php mysql phpword

请有人能告诉我在phpword中使用cloneblock的语法。

因此,我已经在MySQL数据库中获取了数据,对于需要通过phpword导入到我的word文档中的单行,它可以正常工作....运行我的查询并搜索并替换为模板处理器。但是,现在我想在Word文档中插入多行。我研究发现,cloneblock方法就是答案。但是我无法使其工作....当前,我的代码正在运行,但似乎未进入第二行。

我实际上没有收到任何错误消息。我的代码执行正常...但是最终显示的单词文件无法正常显示....如果您看到我的代码,我得到了一个echo语句...该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);

1 个答案:

答案 0 :(得分:0)

我已经进行了调查并找到了解决方案。

您要克隆相同的块 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);