2015-02-05 14 views
0

replaceVariableByHTML 함수를 사용하여 word에서 multpile 변수를 바꾸려고합니다. 또한 replaceVariableByText를 사용하여 텍스트를 대체합니다. 만약 내가 replaceVariableByText 만 사용한다면 괜찮아 지지만 HTML 대체를 추가하면 문제가 발생한다. 의사가 생성되지 않는다. 변수를 HTML 코드로만 대체하려고했지만 하나의 변수 만 바꿀 수 있습니다. 내가 뭐 잘못하고 있니? 내 코드 :여러 replacevariablebyhtml 작동하지 않습니다 - PHPDocX

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

답변

0

진술이 완전하지 않을 수도 있습니다.

이 문서에 따르면,이 형성되어야한다

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