我正在使用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');
下载的文件没有替换任何邮件合并字段。从演示中,我无法推断看起来不像真正的单词邮件合并字段的.your_name是如何被替换的?我看到的只是一些错误检查代码来确定$your_name。。。
这就是为什么,您需要的模板语法实际上在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"one_answers"b"的两个块,并将它们的字段与$data
合并。所以你可以使用[a.ContactName]
,[a.Address1]
。。。由于CCD_ 11的结构。但是与包一起提供的Docx模板的字段不再有效,因为$data的结构不相同。
你可以看看TBS的在线例子,有很多字段和块语法的例子。