Я пытаюсь заменить переменную multpile в слове, используя функцию replaceVariableByHTML, а также заменяю текст, используя replaceVariableByText. Если я использую только replaceVariableByText, то все в порядке, но добавление замены html вызывает проблемы — документ не генерируется. Я пытался заменить переменные только HTML-кодом, но я могу заменить только одну переменную. Я делаю что-то неправильно? Это мой код:
//$htmlData and $data are array('name' => 'value')
$docx = new \CreateDocxFromTemplate($templateDir);
$docx->setTemplateSymbol('‡');
$docx->replaceVariableByText($data, array());
foreach($htmlData as $key => $value)
$docx->replaceVariableByHTML($key, 'block', $value);
$filename = uniqid();
$uniqName = sys_get_temp_dir() . DIRECTORY_SEPARATOR . $filename.'';
$docx->createDocx($uniqName);
header('Content-Type: application/vnd.openxmlformats-officedocument.' .
'wordprocessingml.document');
header('Content-Disposition: attachment; filename="' . $templateSymbol .
'.' . $this->documentExtension . '"');
header('Content-Transfer-Encoding: binary');
header('Content-Length: ' . filesize($uniqName . '.' . $this->documentExtension));
readfile($uniqName . '.' . $this->documentExtension);
Я считаю, что ваше утверждение может быть неполным.
Согласно документации, он должен быть сформирован как:
public replaceTemplateVariableByHTML (string $var, string $type, string $html [, array $options])
В зависимости от того, что именно вы пытаетесь достичь, вы можете попробовать это:
$docx->replaceVariableByHTML($key, 'block', $value, array('isFile' => false, 'parseDivsAsPs' => true, 'downloadImages' => true)););
Вы можете изменить свойства isFile, parseDivsAsPs и downloadImages соответственно, но свойство isFile должно быть передано.
Вот полная информация: http://www.phpdocx.com/api-documentation/templates/replace-variable-html-Word-document
Других решений пока нет …