Замена содержимого блока после генерации клонов с использованием cloneBlock - PHPWord - PullRequest
0 голосов
/ 24 декабря 2018

Пожалуйста, кто-нибудь может показать мне синтаксис использования cloneblock в phpword.

Итак, я получил данные в БД MySQL и для отдельных строк, которые мне нужно импортировать в мое слово doc черезphpword работает нормально .... чтобы выполнить мой запрос, выполнить поиск и заменить его на процессор шаблонов.НО, теперь я хочу вставить несколько строк в мой текстовый документ.Я исследовал и обнаружил, что метод клоноблоков является ответом.Однако я не могу заставить его работать .... в настоящее время мой код работает, но он, похоже, не доходит до второй строки.

Я не получаю никаких сообщений об ошибках.Мой код выполняется нормально ... но файл с конечным отображаемым словом не отображается нормально ... и если вы видите мой код, я получил утверждение echo ... которое выводит в моем браузере именно то, что я хочу "испортить" &«хорошо», (как пример, приведенный для одного из данных строки), но эти данные не попадают в мое слово doc вот так ... они дублируют «повреждено», «повреждено»..

$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 голосов
/ 25 декабря 2018

Я провел расследование и нашел решение.

Вы клонируете одинаковых блоков N раз :

$ templateProcessor->cloneBlock ('CLONEME', $ trailer_count);

, а затем с помощью функции fetch Вы пытаетесь заменить right_trailer_tyre_condition некоторым значением:

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

Проблема в том, что вы замена всех заполнителей .

Но на самом деле Вам необходимо заменить их один на один с другим значения.

Решение состоит в том, чтобы определить 3-й аргумент , что означает количество элементов для замены .

Просто измените его на:

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