首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用TinyButStrong模板引擎合并3级子块

用TinyButStrong模板引擎合并3级子块
EN

Stack Overflow用户
提问于 2019-01-19 02:38:20
回答 2查看 181关注 0票数 0

最终目标是将write OpenDocument与OPENTBS合并。

但是我还没能在一个html模板上合并3个级别的块来测试。下面是该测试的代码。你能给我解释一下出了什么问题吗?

第一级和第二级数据可以正确合并。

第三块没有合并,我不明白为什么.

下面是示例的代码。数据在php程序中。

php程序:

代码语言:javascript
复制
    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模板:

代码语言:javascript
复制
<!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>

EN

回答 2

Stack Overflow用户

发布于 2019-01-20 23:45:31

我可以看到两个错误:

  1. 您的数据数组似乎格式不正确。正如您所看到的,记录«Appels France métropolitaine»与记录«Appels is»不在同一级别。所以你的数据中可能有超过3个levels.
  2. sub1_sub1不是TBS参数。所以当你的模板中有sub1_sub1=liste_dest时,TBS就会忽略它。即使它是子块或sub-sub-block...

的参数,您也应该使用类似sub1=liste_dest的参数

票数 0
EN

Stack Overflow用户

发布于 2019-01-23 02:25:38

是!它运行..。

非常感谢你的这堂课!!

下面是正在运行的示例:

代码语言:javascript
复制
    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);

和模板代码:

代码语言:javascript
复制
<!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中尝试它...

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54259727

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档