我正在使用http://www.tinybutstrong.com/plugins/opentbs/demo/demo.html并且无法让它发挥作用。我的.docx有真正的单词邮件合并字段。我一直试图理解文档,我可以从中得到的,就是PHP演示代码,似乎声明了$ your_name,然后它神奇地替换了.docx中的onshow.your_name。
在第一个例子中,我以为我使用MergeBlock和$ data数组。到目前为止,这是我的代码:
$TBS = new clsTinyButStrong;
$TBS->Plugin(TBS_INSTALL, OPENTBS_PLUGIN);
$template = $_SERVER['DOCUMENT_ROOT'] . '/inc/dd.docx';
$data = array();
$data[] = array('ContactName'=>$this->title . ' ' . $this->firstname . ' ' . $this->surname,
'Address1'=>$this->address1,
'Address2'=>$this->address2,
'Address3'=>$this->town,
'Address4'=>$this->county,
'PostalCode'=>$this->postcode,
'Bacsref'=>$this->bb_number,
'Account_Name'=>$this->ac_name,
'SortCode'=>$this->CorrectedSortCode,
'Account_Number'=>$this->CorrectedAccountNumber);
$ContactName = $this->title . ' ' . $this->firstname . ' ' . $this->surname;
$TBS->LoadTemplate($template);
$TBS->MergeBlock('a,b', $data);
$file_name = $this->bb_number . ' Direct Debit';
//$TBS->Plugin(OPENTBS_DEBUG_XML_CURRENT);
$TBS->Show(OPENTBS_DOWNLOAD, $file_name . '.docx');
下载的文件未替换任何邮件合并字段。从演示中,我无法推断如何更换onshow.your_name,它看起来不像真正的单词邮件合并字段?我只看到一些错误检查代码来确定$ your_name ...
答案 0 :(得分:3)
OpenTBS是TinyButStrong模板引擎(也称为TBS)的插件。 TBS合并text / html / xml内容,而OpenTBS + TBS合并Docx,Xlsx,Pptx,Odt,Ods,......
这就是为什么你需要的模板语法实际上在TinyButStrong手册中。
例如:
$your_name
已在docx中与标记[onload.your_name]
合并,因为所有[onload.*]
都是一个自动字段,当您调用$TBS->Show()
时它将被合并,并且它将被合并使用相应的PHP全局变量。
如果在PHP中没有定义任何名为$your_name
的全局变量,那么TBS将引发错误,因为它无法合并[onload.your_name]
。
关于MergeBlock():
有相同的数据/文件对应关系。也就是说:当您编码$TBS->MergeBlock('a,b', $data);
时,TBS将搜索名为“a”和“b”的两个块,并将其字段与$data
合并。因此,您可以使用[a.ContactName]
,[a.Address1]
,...因为$data
的结构。但是包中给出的Docx模板的字段不再有效,因为$ data的结构不一样。
您可以看一下TBS on-line examples,有很多字段和块语法示例。