OpenTBS Mail使用PHP合并.docx

时间:2012-03-27 14:36:37

标签: php ms-word docx tinybutstrong opentbs

我正在使用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 ...

1 个答案:

答案 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,有很多字段和块语法示例。