Почему «deleteBlocks» не работает в phpWord? - PullRequest
0 голосов
/ 07 января 2020

Я пытаюсь использовать блоки в своем документе Word, но у меня возникли некоторые проблемы. Прежде всего, когда я объявляю блок в своем документе, если я не использую функцию «cloneBlock», результат выглядит так:

${sec}
example
${/sec}

Может быть, я должен использовать эту функцию, чтобы отобразиться правильно. Но моя главная проблема в том, что «deleteBlock» не работает. Если я не клонирую блок, сгенерированный docx будет поврежден. Но если я клонирую блок, функция «deleteBlock» не удаляет блок, и в моем конечном файле docx появляется информация, которая находится внутри этого блока.

Это мой код:

//Word
// Creating the new document...
$templateProcessor = new \PhpOffice\PhpWord\TemplateProcessor('../example.docx');
//set value
//$templateProcessor->setValue('title', 'Example');

//Triplicate block
$templateProcessor->cloneBlock('firstblock', 3, true, true);
$templateProcessor->setValue('firstname#1', 'John');
$templateProcessor->setValue('lastname#1', 'Doe');
$templateProcessor->setValue('firstname#2', 'John');
$templateProcessor->setValue('lastname#2', 'Doe');
$templateProcessor->setValue('firstname#3', 'John');
$templateProcessor->setValue('lastname#3', 'Doe');

//Delete Block
$templateProcessor->cloneBlock('sec', 1, true, true);
$templateProcessor->deleteBlock('sec');
$templateProcessor->saveAs('example.docx');

Шаблон Docx:

${firstblock}
Hello ${firstname} ${lastname}!
${/firstblock}
${sec}
example
${/sec}

ОБНОВЛЕНИЕ: Вместо использования функции "deleteBlock" я использовал функцию "cloneBlock", как это, и он удаляет блок:

//Delete Block
$templateProcessor->cloneBlock('sec', 0, true, true);

Итак, я написал клонировать блок 0 раз, чтобы он исчез, но у меня есть другая проблема. Я не знаю почему, но это работает иногда

...