Debug Templates

Benötigt man für die Ausgabe z.B. einer Liste für das Frontend ein eigenes Template oder möchte man bei einem vorhanden Template wissen, welche Attribute an das Template übermittelt werden, kann man diese sich mit der Debug-Toolbar von Symfony sehr komfortabel ausgeben lassen.

Das Standardtemplate ist „metamodel_prerendered“, bzw. das Template, welches in der Render-Einstellung für die Ausgabe ausgewählt wurde.

Ist noch kein eigens Template im Einsatz, muss eine Kopie von „metamodel_prerendered“ im Contao-Ordner „Templates“ angelegt werden.

Das jeweilige Template wird mit den folgenden Zeilen oben ergänzt:

1
2
3
4
5
6
<?php
// Debug items.
if (function_exists('dump')) {
    dump($this->data);
}
?>

Wird die Seite über „app_dev“ aufgerufen z.B. „domain.tld/app_dev.php/meine-mm-listenansicht.html“, kann man das Array in der Debug-Toolbar über das „Fadenkreuz-Icon“ untersuchen:

img_symfony-toolbar

Mit der Prüfung „function_exist“ stört das dump nicht den normalen Aufruf der Seite.

Für die leichte Übernahme der Array-Angaben in ein FE-Template, gibt es den Array-Helper, die eine Ausgabe im Quelltext für ein Copy&Paste erstellt.

Debug in MM 2.0

In Contao 3 steht die Symfony-Toolbar nicht zur Verfügung und man muss über ein print_r gehen.

Das jeweilige Template wird mit einigen Ausgabezeilen ergänzt und sollte anschließend wie folgt beginnen:

1
2
3
4
5
6
7
<?php
echo "<!-- DEBUG START \n";
echo "<pre>\n";
print_r($this->items->parseAll($this->getFormat(), $this->view));
echo "</pre>\n";
echo "\n DEBUG ENDE -->";
?>

Wird die entsprechende Webseite mit derm Listing im Browser aufgerufen, sollte sich im Quelltext die Debugausgabe befinden.

Ist die Ausgabe sehr umfangreich, kann die Darstellung im Browser sehr langsam werden - Abhilfe schafft z.B. sich nur ein Item-Knoten ausgeben zu lassen:

1
2
3
4
5
6
7
8
<?php
echo "<!-- DEBUG START \n";
echo "<pre>\n";
// nur 0.-Knoten
print_r($this->items->parseAll($this->getFormat(), $this->view)[0]);
echo "</pre>\n";
echo "\n DEBUG ENDE -->";
?>

Ist in den Render-Einstellungen die Weiterleitung und Filter für die Detailseite eingestellt, wird die Ausgabe des Arrays im Quelltext sehr umfangreich und führt häufig zu einem Error „Allowed memory size…“. Abhilfe schafft hier z.B. das kurzzeitige Abschalten des Filters für die Weiterleitung.

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