Array-Helper

In vielen Fällen baut man sich sein Template für die Frontend- Ausgabe aus HTML und „echo“ der PHP-Variablen des Ausgabe-Arrays zusammen.

Hat man eine Debug-Ausgabe wie in Debug Templates sieht man, dass in Template zur Verfügung stehende Array mit seinen Knoten als baumartige Struktur.

Für die Übernahme in das Template kann das insbesondere bei vielen Relationen zu anderen MetaModels recht mühsam werden.

Mit dem folgenden „Array-Helper“ werden die Array-Knoten so ausgegeben, dass man diese leicht per „Copy&Paste“ in das Template übernehmen kann.

Das jeweilige Template wird mit den folgenden Zeilen an erster Position ergänzt:

 1 <?php
 2 // http://stackoverflow.com/a/14518402
 3 function printArray($array, $path=false, $top=true) {
 4     $data = ""; $delimiter = "~~|~~"; $p = null;
 5     if(is_array($array)){
 6       foreach($array as $key => $a){
 7         if(!is_array($a) || empty($a)){
 8           if(is_array($a)){
 9             $data .= $path."['{$key}'] = array();".$delimiter;
10           } else {
11             $data .= $path."['{$key}'] = \"".addslashes($a)."\";".$delimiter;
12           }
13         } else {
14           $data .= printArray($a, $path."['{$key}']", false);
15         }
16       }
17     }
18     if($top){
19       $return = "";
20       foreach(explode($delimiter, $data) as $value){
21         if(!empty($value)){ $return .= '$arrItem'.$value."\n"; }
22       };
23       return $return;
24     }
25     return $data;
26 }
27
28 echo "<!-- DEBUG START\n";
29 echo "<pre>\n";
30 // nur 0.-Knoten
31 //print_r($this->items->parseAll($this->getFormat(), $this->view)[0]);
32 echo printArray($this->items->parseAll($this->getFormat(), $this->view)[0]);
33 echo "</pre>\n";
34 echo "DEBUG ENDE -->\n";
35 ?>

Das Template sollte anschließend mit den folgenden Zeilen beginnen:

 1<html>
 2 <!-- DEBUG START
 3 <pre>
 4 $arrItem['raw']['id'] = "93";
 5 $arrItem['raw']['pid'] = "0";
 6 $arrItem['raw']['sorting'] = "0";
 7 $arrItem['raw']['tstamp'] = "1484897086";
 8 $arrItem['raw']['name'] = "0";
 9 $arrItem['raw']['vorname'] = "Amir";
10 $arrItem['raw']['email'] = "Amir.Avery@mmtest.com";
11 $arrItem['raw']['abteilung']['__SELECT_RAW__']['id'] = "4";
12 $arrItem['raw']['abteilung']['__SELECT_RAW__']['pid'] = "0";
13 $arrItem['raw']['abteilung']['__SELECT_RAW__']['sorting'] = "0";
14 $arrItem['raw']['abteilung']['__SELECT_RAW__']['tstamp'] = "1442499032";
15 $arrItem['raw']['abteilung']['__SELECT_RAW__']['name'] = "Marketing";
16 $arrItem['raw']['abteilung']['__SELECT_RAW__']['alias'] = "marketing";
17 $arrItem['raw']['abteilung']['name'] = "Marketing";
18 $arrItem['raw']['abteilung']['alias'] = "marketing";
19 $arrItem['text']['name'] = "Avery";
20 $arrItem['text']['vorname'] = "Amir";
21 $arrItem['text']['email'] = "Amir.Avery@mmtest.com";
22 $arrItem['text']['abteilung'] = "Marketing";
23 $arrItem['attributes']['name'] = "Name";
24 $arrItem['attributes']['vorname'] = "Vorname";
25 $arrItem['attributes']['email'] = "E-Mail";
26 $arrItem['attributes']['abteilung'] = "Abteilung";
27 $arrItem['html5']['name'] = "<span class=\"text\">0</span>";
28 $arrItem['html5']['vorname'] = "<span class=\"text\">Amir</span>";
29 $arrItem['html5']['email'] = "<span class=\"text\">Amir.Avery@mmtest.com</span>";
30 $arrItem['html5']['abteilung'] = "Marketing";
31 $arrItem['class'] = "first even";
32 $arrItem['jumpTo'] = array();
33 </pre>
34 DEBUG ENDE -->
35</html>

Im Template könnte dann z.B. die Ausgabe der Abteilung so aussehen:

1<html>
2...
3<p><span class="label"><?= $arrItem['attributes']['abteilung'] ?>:</span> <?= $arrItem['raw']['abteilung']['name'] ?></p>
4...
5</html>

Die Ausgabe kann man wieder entfernen, in dem man den Ausgabeblock auskommentiert, löscht oder zu einem anderen Template wechselt.