最终目标是将write OpenDocument与OPENTBS合并。
但是我还没能在一个html模板上合并3个级别的块来测试。下面是该测试的代码。你能给我解释一下出了什么问题吗?
第一级和第二级数据可以正确合并。
第三块没有合并,我不明白为什么.
下面是示例的代码。数据在php程序中。
php程序:
include_once('tbs/tbs_class.php');
$DET250[] = array(
'num' => '071247xx76',
'liste_appels' =>
array(
array(
'type_appel' => 'Dans le forfait',
'liste_dest' =>
array(
'dest' => 'Appels France métropolitaine',
'appel' =>
array(
array('det250_14' => '038809XXX1', 'det250_12' => '28-11-2018', 'det250_13' => 'France', 'det250_15' => 'DA', 'det250_16' => '10:09:16', 'det250_17' => '0h03m55', 'det250_18' => '0h03m55'),
array('det250_14' => '038809XXX2', 'det250_12' => '28-11-2018', 'det250_13' => 'France', 'det250_15' => 'DA', 'det250_16' => '10:09:16', 'det250_17' => '0h03m55', 'det250_18' => '0h03m55'),
array('det250_14' => '038809XXX3', 'det250_12' => '28-11-2018', 'det250_13' => 'France', 'det250_15' => 'DA', 'det250_16' => '10:09:16', 'det250_17' => '0h03m55', 'det250_18' => '0h03m55')
),
),
array(
'dest' => 'Appels vers mobiles',
'appel' =>
array(
array('det250_14' => '038809XXX1', 'det250_12' => '28-11-2018', 'det250_13' => 'France', 'det250_15' => 'DA', 'det250_16' => '10:09:16', 'det250_17' => '0h03m55', 'det250_18' => '0h03m55'),
array('det250_14' => '038809XXX2', 'det250_12' => '28-11-2018', 'det250_13' => 'France', 'det250_15' => 'DA', 'det250_16' => '10:09:16', 'det250_17' => '0h03m55', 'det250_18' => '0h03m55'),
array('det250_14' => '038809XXX3', 'det250_12' => '28-11-2018', 'det250_13' => 'France', 'det250_15' => 'DA', 'det250_16' => '10:09:16', 'det250_17' => '0h03m55', 'det250_18' => '0h03m55')
),
),
array(
'dest' => 'Appels numéros spéciaux grat.',
'appel' =>
array(
array('det250_14' => '038809XXX2', 'det250_12' => '28-11-2018', 'det250_13' => 'France', 'det250_15' => 'DA', 'det250_16' => '10:09:16', 'det250_17' => '0h03m55', 'det250_18' => '0h03m55'),
array('det250_14' => '038809XXX3', 'det250_12' => '28-11-2018', 'det250_13' => 'France', 'det250_15' => 'DA', 'det250_16' => '10:09:16', 'det250_17' => '0h03m55', 'det250_18' => '0h03m55')
),
),
),
array(
'type_appel' => 'Hors le forfait',
'liste_dest' =>
array(
'dest' => 'Appels France métropolitaine',
'appel' =>
array(
array('det250_14' => '038809XXX1', 'det250_12' => '28-11-2018', 'det250_13' => 'France', 'det250_15' => 'DA', 'det250_16' => '10:09:16', 'det250_17' => '0h03m55', 'det250_18' => '0h03m55'),
array('det250_14' => '038809XXX2', 'det250_12' => '28-11-2018', 'det250_13' => 'France', 'det250_15' => 'DA', 'det250_16' => '10:09:16', 'det250_17' => '0h03m55', 'det250_18' => '0h03m55'),
array('det250_14' => '038809XXX3', 'det250_12' => '28-11-2018', 'det250_13' => 'France', 'det250_15' => 'DA', 'det250_16' => '10:09:16', 'det250_17' => '0h03m55', 'det250_18' => '0h03m55')
),
),
array(
'dest' => 'Appels vers mobiles',
'appel' =>
array(
array('det250_14' => '038809XXX1', 'det250_12' => '28-11-2018', 'det250_13' => 'France', 'det250_15' => 'DA', 'det250_16' => '10:09:16', 'det250_17' => '0h03m55', 'det250_18' => '0h03m55'),
array('det250_14' => '038809XXX2', 'det250_12' => '28-11-2018', 'det250_13' => 'France', 'det250_15' => 'DA', 'det250_16' => '10:09:16', 'det250_17' => '0h03m55', 'det250_18' => '0h03m55'),
array('det250_14' => '038809XXX3', 'det250_12' => '28-11-2018', 'det250_13' => 'France', 'det250_15' => 'DA', 'det250_16' => '10:09:16', 'det250_17' => '0h03m55', 'det250_18' => '0h03m55')
),
),
array(
'dest' => 'Appels numéros spéciaux grat.',
'appel' =>
array(
array('det250_14' => '038809XXX2', 'det250_12' => '28-11-2018', 'det250_13' => 'France', 'det250_15' => 'DA', 'det250_16' => '10:09:16', 'det250_17' => '0h03m55', 'det250_18' => '0h03m55'),
array('det250_14' => '038809XXX3', 'det250_12' => '28-11-2018', 'det250_13' => 'France', 'det250_15' => 'DA', 'det250_16' => '10:09:16', 'det250_17' => '0h03m55', 'det250_18' => '0h03m55')
),
),
),
)
);
$DET250[] = array(
'num' => '082147cc76',
'liste_appels' =>
array(
array(
'type_appel' => 'Dans le forfait',
'liste_dest' =>
array(
'dest' => 'Appels France métropolitaine',
'appel' =>
array(
array('det250_14' => '038809XXX1', 'det250_12' => '28-11-2018', 'det250_13' => 'France', 'det250_15' => 'DA', 'det250_16' => '10:09:16', 'det250_17' => '0h03m55', 'det250_18' => '0h03m55'),
array('det250_14' => '038809XXX2', 'det250_12' => '28-11-2018', 'det250_13' => 'France', 'det250_15' => 'DA', 'det250_16' => '10:09:16', 'det250_17' => '0h03m55', 'det250_18' => '0h03m55'),
array('det250_14' => '038809XXX3', 'det250_12' => '28-11-2018', 'det250_13' => 'France', 'det250_15' => 'DA', 'det250_16' => '10:09:16', 'det250_17' => '0h03m55', 'det250_18' => '0h03m55')
),
),
array(
'dest' => 'Appels vers mobiles',
'appel' =>
array(
array('det250_14' => '038809XXX1', 'det250_12' => '28-11-2018', 'det250_13' => 'France', 'det250_15' => 'DA', 'det250_16' => '10:09:16', 'det250_17' => '0h03m55', 'det250_18' => '0h03m55'),
array('det250_14' => '038809XXX2', 'det250_12' => '28-11-2018', 'det250_13' => 'France', 'det250_15' => 'DA', 'det250_16' => '10:09:16', 'det250_17' => '0h03m55', 'det250_18' => '0h03m55'),
array('det250_14' => '038809XXX3', 'det250_12' => '28-11-2018', 'det250_13' => 'France', 'det250_15' => 'DA', 'det250_16' => '10:09:16', 'det250_17' => '0h03m55', 'det250_18' => '0h03m55')
),
),
array(
'dest' => 'Appels numéros spéciaux grat.',
'appel' =>
array(
array('det250_14' => '038809XXX2', 'det250_12' => '28-11-2018', 'det250_13' => 'France', 'det250_15' => 'DA', 'det250_16' => '10:09:16', 'det250_17' => '0h03m55', 'det250_18' => '0h03m55'),
array('det250_14' => '038809XXX3', 'det250_12' => '28-11-2018', 'det250_13' => 'France', 'det250_15' => 'DA', 'det250_16' => '10:09:16', 'det250_17' => '0h03m55', 'det250_18' => '0h03m55')
),
),
),
)
);
echo ("\n" . "\n" . "\n" . print_r($DET250, true) . "\n");
$TBS = new clsTinyButStrong;
$TBS->LoadTemplate('test.html');
$TBS->MergeBlock('250', $DET250);
$TBS->Show(TBS_NOTHING);
$result = $TBS->Source;
file_put_contents('test_result.html', $result);html模板:
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Document sans nom</title>
</head>
<body>
<table width="1200" border="1">
<tbody>
<tr>
<td colspan="7">DETAIL DE VOS CONSOMMATIONS TELEPHONIQUES:<br>
<table width="1200" border="1">
<tbody>
<tr>
<td colspan="7">[250.num;block=tr;sub1=liste_appels;headergrp=num;bmagnet=table]<br>
<table width="1200" border="1">
<tbody>
<tr>
<td colspan="7">[250_sub1.type_appel;block=tr;sub1_sub1=liste_dest;headergrp=type_appel;bmagnet=table]<br>
<table width="1200" border="1">
<tbody>
<tr>
<td colspan="7">[250_sub1_sub1.dest;block=tr;headergrp=dest;bmagnet=table]<br>
<table width="1200" border="1">
<tbody>
<tr>
<td>[250_sub1_sub1.det250_14]</td>
<td>[250_sub1_sub1.det250_12]</td>
<td>[250_sub1_sub1.det250_13]</td>
<td>[250_sub1_sub1.det250_15]</td>
<td>[250_sub1_sub1.det250_16]</td>
<td>[250_sub1_sub1.det250_17]</td>
<td>[250_sub1_sub1.det250_18]</td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
</body>
</html>
发布于 2019-01-20 23:45:31
我可以看到两个错误:
sub1_sub1不是TBS参数。所以当你的模板中有sub1_sub1=liste_dest时,TBS就会忽略它。即使它是子块或sub-sub-block...的参数,您也应该使用类似sub1=liste_dest的参数
发布于 2019-01-23 02:25:38
是!它运行..。
非常感谢你的这堂课!!
下面是正在运行的示例:
include_once('tbs/tbs_class.php');
$DET250[] = array(
'num' => '071247xx76',
'liste_appels' =>
array(
array(
'type_appel' => 'Dans le forfait',
'liste_dest' =>
array(
array(
'dest' => 'Appels France métropolitaine',
'appel' =>
array(
array('det250_14' => '038809XXX1', 'det250_12' => '28-11-2018', 'det250_13' => 'France', 'det250_15' => 'DA', 'det250_16' => '10:09:16', 'det250_17' => '0h03m55', 'det250_18' => '0h03m55'),
array('det250_14' => '038809XXX2', 'det250_12' => '28-11-2018', 'det250_13' => 'France', 'det250_15' => 'DA', 'det250_16' => '10:09:16', 'det250_17' => '0h03m55', 'det250_18' => '0h03m55'),
array('det250_14' => '038809XXX3', 'det250_12' => '28-11-2018', 'det250_13' => 'France', 'det250_15' => 'DA', 'det250_16' => '10:09:16', 'det250_17' => '0h03m55', 'det250_18' => '0h03m55')
),
),
array(
'dest' => 'Appels vers mobiles',
'appel' =>
array(
array('det250_14' => '038809XXX1', 'det250_12' => '28-11-2018', 'det250_13' => 'France', 'det250_15' => 'DA', 'det250_16' => '10:09:16', 'det250_17' => '0h03m55', 'det250_18' => '0h03m55'),
array('det250_14' => '038809XXX2', 'det250_12' => '28-11-2018', 'det250_13' => 'France', 'det250_15' => 'DA', 'det250_16' => '10:09:16', 'det250_17' => '0h03m55', 'det250_18' => '0h03m55'),
array('det250_14' => '038809XXX3', 'det250_12' => '28-11-2018', 'det250_13' => 'France', 'det250_15' => 'DA', 'det250_16' => '10:09:16', 'det250_17' => '0h03m55', 'det250_18' => '0h03m55')
),
),
array(
'dest' => 'Appels numéros spéciaux grat.',
'appel' =>
array(
array('det250_14' => '038809XXX2', 'det250_12' => '28-11-2018', 'det250_13' => 'France', 'det250_15' => 'DA', 'det250_16' => '10:09:16', 'det250_17' => '0h03m55', 'det250_18' => '0h03m55'),
array('det250_14' => '038809XXX3', 'det250_12' => '28-11-2018', 'det250_13' => 'France', 'det250_15' => 'DA', 'det250_16' => '10:09:16', 'det250_17' => '0h03m55', 'det250_18' => '0h03m55')
),
),
),
),
array(
'type_appel' => 'Hors le forfait',
'liste_dest' =>
array(
array(
'dest' => 'Appels France métropolitaine',
'appel' =>
array(
array('det250_14' => '038809XXX1', 'det250_12' => '28-11-2018', 'det250_13' => 'France', 'det250_15' => 'DA', 'det250_16' => '10:09:16', 'det250_17' => '0h03m55', 'det250_18' => '0h03m55'),
array('det250_14' => '038809XXX2', 'det250_12' => '28-11-2018', 'det250_13' => 'France', 'det250_15' => 'DA', 'det250_16' => '10:09:16', 'det250_17' => '0h03m55', 'det250_18' => '0h03m55'),
array('det250_14' => '038809XXX3', 'det250_12' => '28-11-2018', 'det250_13' => 'France', 'det250_15' => 'DA', 'det250_16' => '10:09:16', 'det250_17' => '0h03m55', 'det250_18' => '0h03m55')
),
),
array(
'dest' => 'Appels vers mobiles',
'appel' =>
array(
array('det250_14' => '038809XXX1', 'det250_12' => '28-11-2018', 'det250_13' => 'France', 'det250_15' => 'DA', 'det250_16' => '10:09:16', 'det250_17' => '0h03m55', 'det250_18' => '0h03m55'),
array('det250_14' => '038809XXX2', 'det250_12' => '28-11-2018', 'det250_13' => 'France', 'det250_15' => 'DA', 'det250_16' => '10:09:16', 'det250_17' => '0h03m55', 'det250_18' => '0h03m55'),
array('det250_14' => '038809XXX3', 'det250_12' => '28-11-2018', 'det250_13' => 'France', 'det250_15' => 'DA', 'det250_16' => '10:09:16', 'det250_17' => '0h03m55', 'det250_18' => '0h03m55')
),
),
array(
'dest' => 'Appels numéros spéciaux grat.',
'appel' =>
array(
array('det250_14' => '038809XXX2', 'det250_12' => '28-11-2018', 'det250_13' => 'France', 'det250_15' => 'DA', 'det250_16' => '10:09:16', 'det250_17' => '0h03m55', 'det250_18' => '0h03m55'),
array('det250_14' => '038809XXX3', 'det250_12' => '28-11-2018', 'det250_13' => 'France', 'det250_15' => 'DA', 'det250_16' => '10:09:16', 'det250_17' => '0h03m55', 'det250_18' => '0h03m55')
),
),
),
),
)
);
$DET250[] = array(
'num' => '082147cc76',
'liste_appels' =>
array(
array(
'type_appel' => 'Dans le forfait',
'liste_dest' =>
array(
array(
'dest' => 'Appels France métropolitaine',
'appel' =>
array(
array('det250_14' => '038809XXX1', 'det250_12' => '28-11-2018', 'det250_13' => 'France', 'det250_15' => 'DA', 'det250_16' => '10:09:16', 'det250_17' => '0h03m55', 'det250_18' => '0h03m55'),
array('det250_14' => '038809XXX2', 'det250_12' => '28-11-2018', 'det250_13' => 'France', 'det250_15' => 'DA', 'det250_16' => '10:09:16', 'det250_17' => '0h03m55', 'det250_18' => '0h03m55'),
array('det250_14' => '038809XXX3', 'det250_12' => '28-11-2018', 'det250_13' => 'France', 'det250_15' => 'DA', 'det250_16' => '10:09:16', 'det250_17' => '0h03m55', 'det250_18' => '0h03m55')
),
),
array(
'dest' => 'Appels vers mobiles',
'appel' =>
array(
array('det250_14' => '038809XXX1', 'det250_12' => '28-11-2018', 'det250_13' => 'France', 'det250_15' => 'DA', 'det250_16' => '10:09:16', 'det250_17' => '0h03m55', 'det250_18' => '0h03m55'),
array('det250_14' => '038809XXX2', 'det250_12' => '28-11-2018', 'det250_13' => 'France', 'det250_15' => 'DA', 'det250_16' => '10:09:16', 'det250_17' => '0h03m55', 'det250_18' => '0h03m55'),
array('det250_14' => '038809XXX3', 'det250_12' => '28-11-2018', 'det250_13' => 'France', 'det250_15' => 'DA', 'det250_16' => '10:09:16', 'det250_17' => '0h03m55', 'det250_18' => '0h03m55')
),
),
array(
'dest' => 'Appels numéros spéciaux grat.',
'appel' =>
array(
array('det250_14' => '038809XXX2', 'det250_12' => '28-11-2018', 'det250_13' => 'France', 'det250_15' => 'DA', 'det250_16' => '10:09:16', 'det250_17' => '0h03m55', 'det250_18' => '0h03m55'),
array('det250_14' => '038809XXX3', 'det250_12' => '28-11-2018', 'det250_13' => 'France', 'det250_15' => 'DA', 'det250_16' => '10:09:16', 'det250_17' => '0h03m55', 'det250_18' => '0h03m55')
),
),
),
),
)
);
echo ("\n" . "\n" . "\n" . print_r($DET250, true) . "\n");
$test=array(
array('test_14' => '038809XXX1', 'test_12' => '28-11-2018', 'test_13' => 'France', 'test_15' => 'DA', 'test_16' => '10:09:16', 'test_17' => '0h03m55', 'test_18' => '0h03m55'),
array('test_14' => '038809XXX2', 'test_12' => '28-11-2018', 'test_13' => 'France', 'test_15' => 'DA', 'test_16' => '10:09:16', 'test_17' => '0h03m55', 'test_18' => '0h03m55'),
array('test_14' => '038809XXX3', 'test_12' => '28-11-2018', 'test_13' => 'France', 'test_15' => 'DA', 'test_16' => '10:09:16', 'test_17' => '0h03m55', 'test_18' => '0h03m55')
);
echo ("\n" . "\n" . "\n" . print_r($test, true) . "\n");
$TBS = new clsTinyButStrong;
$TBS->LoadTemplate('test.html');
$TBS->MergeBlock('250', $DET250);
$TBS->MergeBlock('test', $test);
$TBS->Show(TBS_NOTHING);
$result = $TBS->Source;
file_put_contents('test_result.html', $result);和模板代码:
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Document sans nom</title>
</head>
<body>
<table width="1200" border="1">
<tbody>
<tr>
<td colspan="7">DETAIL DE VOS CONSOMMATIONS TELEPHONIQUES:<br>
<table width="1200" border="1">
<tbody>
<tr>
<td colspan="7">[250.num;block=tr;sub1=liste_appels;headergrp=num;bmagnet=table]<br>
<table width="1200" border="1">
<tbody>
<tr>
<td colspan="7">[250_sub1.type_appel;block=tr;sub1=liste_dest;headergrp=type_appel;bmagnet=table]<br>
<table width="1200" border="1">
<tbody>
<tr>
<td colspan="7">[250_sub1_sub1.dest;block=tr;sub1=appel;headergrp=dest;bmagnet=table]<br>
<table width="1200" border="1">
<tbody>
<tr>
<td>[250_sub1_sub1_sub1.det250_14;block=tr]</td>
<td>[250_sub1_sub1_sub1.det250_12]</td>
<td>[250_sub1_sub1_sub1.det250_13]</td>
<td>[250_sub1_sub1_sub1.det250_15]</td>
<td>[250_sub1_sub1_sub1.det250_16]</td>
<td>[250_sub1_sub1_sub1.det250_17]</td>
<td>[250_sub1_sub1_sub1.det250_18]</td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
<BR><BR>
<table width="1200" border="1">
<tbody>
<tr>
<td>[test.test_14;block=tr]</td>
<td>[test.test_12]</td>
<td>[test.test_13]</td>
<td>[test.test_15]</td>
<td>[test.test_16]</td>
<td>[test.test_17]</td>
<td>[test.test_18]</td>
</tr>
</tbody>
</table>
</body>
</html>
谢谢你的帮助。
我现在将在OpenTBS中尝试它...
https://stackoverflow.com/questions/54259727
复制相似问题