0

我正在使用http://www.tinybutstrong.com/plugins/opentbs/demo/demo.html并且无法使其正常工作。我的 .docx 有真正的 word 邮件合并字段。我一直在试图理解文档,我能从中得到的只是 PHP 演示代码,似乎声明了 $your_name,然后它神奇地替换了 .docx 中的 onshow.your_name。

在第一个实例中,我以为我使用了带有 $data 数组的 MergeBlock。到目前为止,这是我的代码:

  $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 ...

4

1 回答 1

3

OpenTBS 是TinyButStrong模板引擎(也称为 TBS)的插件。TBS 合并 text/html/xml 内容,而 OpenTBS+TBS 合并 Docx, Xlsx, Pptx, Odt, Ods, ...

这就是为什么您需要的模板语法实际上在 TinyButStrong 手册中。

例如:

$your_name在 docx 中与标签合并,[onload.your_name]因为 all[onload.*]是一个自动字段,调用时会合并$TBS->Show(),并且会与对应的 PHP 全局变量合并。

如果在您的 PHP 中您没有定义任何名为的全局变量$your_name,那么 TBS 将引发错误,因为它无法合并[onload.your_name]

关于合并块():

有相同的数据/文件对应关系。也就是说:当您编写代码时,$TBS->MergeBlock('a,b', $data);TBS 将搜索名为“a”和“b”的两个块,并将它们的字段与$data. 所以你可以使用[a.ContactName], [a.Address1], ... 因为$data. 但是随包提供的 Docx 模板的字段不再有效,因为 $data 的结构不同。

你可以看看TBS 在线示例,有很多字段和块语法示例。

于 2012-04-02T00:30:21.890 回答