setComplexValue 只替换第一个标签

问题描述

我的模板 docx 有重复的标签

${tag_name}
${tag_name}
${tag_name}

我的代码

$value = new TextRun();
$value->addText('tag value');
$templateProcessor->setComplexValue('tag_name',$value);

结果文档:

tag_value //replace only first
${tag_name}
${tag_name}

这是正确的行为吗?是否可以全局替换所有标签

setValue(tag,simple_text) 工作正常,但感觉不太优雅。

解决方法

它可以像这样进入 while 循环:

while ($templateProcessor->getVariableCount()[$tag]) {
    $templateProcessor->setComplexValue($tag,$value);
}