O.Hot
O.Hot

Reputation: 1

Merging Sub blocs on 3 levels with TinyButStrong template engine

The final goal is to merge write OpenDocument with OPENTBS.

But I haven't managed to merge 3 levels blocks on an html template to test. There is the code of that test below. Could you explain me what is wrong?

The first and the second level of data merges correctly.

The Third block doesn't merge, and I don't understand why...

There's the code of the exemple below. The data is in the php program.

php program:



    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 template:

<!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>

Upvotes: 0

Views: 297

Answers (2)

O.Hot
O.Hot

Reputation: 1

YES! It Runs...

Thanks you a lot for this awesome class!!

There's the running exemple:



    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);

and the template code:

<!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>
     

Thanks for your help.

I will try it in OpenTBS now...

Upvotes: 0

Skrol29
Skrol29

Reputation: 5552

I can see 2 mistakes :

  1. Your data array seems malformed. As you can see, the record « Appels France métropolitaine » is not at the same level as record « Appels vers mobiles ». So you data may have more than 3 levels.
  2. sub1_sub1 is not a TBS parameter. So when you've got sub1_sub1=liste_dest in your template, it is simply ignored by TBS. You should have instead something like sub1=liste_dest even if it is a parameter for a sub-block, or a sub-sub-block...

Upvotes: 0

Related Questions