我正在尝试遍历一个简单的数组并使用docx
在我的OpenTBS
模板中显示其信息,但无法使其正常工作:(
所以我有一个非常简单的array
,我按照以下方式分配给一个块:
$TBS = new \clsTinyButStrong();
$TBS->Plugin(TBS_INSTALL, OPENTBS_PLUGIN);
$TBS->LoadTemplate($template, OPENTBS_ALREADY_UTF8);
$myArray = array( array( 'name' => 'bedroom'),
array( 'name' => 'kitchen'),
array( 'name' => 'lounge'),
);
$TBS->MergeBlock( 'myBlock', $myArray);
$output_file_name = 'C:/testTBS.docx';
$TBS->Show(OPENTBS_FILE, $output_file_name);
在我的docx
模板中,我尝试过一些简单的事情:
[myBlock.name] => doesnt display anything
理想情况下,我想重复整个块,因为您可以想象我的阵列会更复杂。
我尝试过其他解决方案:
[myBlock; block=begin]
Name : [onshow; myBlock.0.name;]
Name : [onshow; myBlock.$;]
Name : [onshow; myBlock.#;]
Name : [onshow; name;]
Name : [onshow; BlockName.0;]
[myBlock; block=end]
这样的工作,因为它适当地迭代数组(它显示所有的3次,这是好的,考虑到我有3个子数组)。 但是有了这个选项,我找不到如何显示名称,因为我尝试过的所有内容都没有显示,正如您在输出中看到的那样:
Name : [onshow; myBlock.0.name;]
Name :
Name : [onshow; myBlock.#;]
Name :[onshow; name;]
Name :[onshow; BlockName.0;]
Name : [onshow; myBlock.0.name;]
Name :
Name : [onshow; myBlock.#;]
Name :[onshow; name;]
Name :[onshow; BlockName.0;]
Name : [onshow; myBlock.0.name;]
Name :
Name : [onshow; myBlock.#;]
Name :[onshow; name;]
Name :[onshow; BlockName.0;]
(我在没有onshow
的情况下尝试了同样的事情,没有运气)
我很遗憾地问一个如此简单的问题,如如何迭代数组,但即使阅读了关于主题,文档或通过他们提供的例子的其他几篇文章,我也无法找到这个简单问题的解决方案:(
非常感谢您的帮助,如果您需要更多信息,请与我们联系!
答案 0 :(得分:2)
PHP端的代码片段看起来是正确的。
您的独立模板[myBlock.name]
应与数据的第一条记录正确合并。这是没有定义块绑定时的TBS行为。
如果没有合并,可能是因为某些设计确实拆分了一些TBS标签。解决方案是选择TBS标签,剪切它,然后将其作为纯文本(没有格式化)过去。
还有一个Ms Word Macro for cleaning TBS tags in DOCX,但即使它很实用,现在还处于测试阶段。
带有块定义的模板不正确。它应该是这样的:
[myBlock; block=begin]
Name : [myBlock.name]
Name : [myBlock.$]
Name : [myBlock.#]
Name : [myBlock.name]
[myBlock; block=end]