我试图循环一个简单的数组,并使用OpenTBS在我的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的情况下,我也尝试过同样的方法,没有运气)
我很抱歉地问了这么一个简单的问题,比如如何迭代数组,但是即使阅读了关于这个主题的其他文章,文档,或者看了它们提供的例子,我还是找不到解决这个简单问题的方法:
非常感谢您的帮助,如果您需要更多的信息,请告诉我!
发布于 2016-01-11 16:15:32
PHP端的代码片段看起来是正确的。
您的独立模板[myBlock.name]应该与数据的第一条记录正确地合并。这是没有定义块边界时的TBS行为。
如果没有合并,可能是因为某些设计确实分割了一些TBS标记。解决方案是选择TBS标记,剪切它,然后以纯文本的形式通过它(没有格式设置)。
也有一个Word Macro女士用于清除DOCX中的TBS标签,但即使它是实用的,它现在是测试版。
带有块定义的模板不正确。应该是这样的:
[myBlock; block=begin]
Name : [myBlock.name]
Name : [myBlock.$]
Name : [myBlock.#]
Name : [myBlock.name]
[myBlock; block=end]https://stackoverflow.com/questions/34709609
复制相似问题