数组上的 OpenTBS 迭代

OpenTBS iteration over an array

我正在尝试遍历一个简单的数组并使用 OpenTBS 在我的 docx 模板中显示其信息,但无法使其正常工作:(

所以我有一个非常简单的 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 的情况下尝试过同样的事情,但没有成功)

我很抱歉提出如何遍历数组这样一个简单的问题,但即使阅读了有关该主题的其他几篇文章、文档或阅读了他们提供的示例,我还是无法解决找到这个简单问题的解决方案:(

非常感谢您的帮助,如果您需要更多信息,请告诉我!

您在 PHP 一侧的代码片段看起来是正确的。

您的独立模板 [myBlock.name] 应该与数据的第一条记录正确合并。这就是没有定义块边界时的 TBS 行为。

如果什么都没有合并,可能是因为某些设计确实拆分了一些TBS标签。解决方案是 select 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]