数组上的 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]
我正在尝试遍历一个简单的数组并使用 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]