Template Variablen anzeigen: Unterschied zwischen den Versionen

Aus Contao Community Documentation

(Überarbeitet und aktualisiert auf Contao 4)
K (Contao 4)
 
(Eine dazwischenliegende Version von einem Benutzer wird nicht angezeigt)
Zeile 76: Zeile 76:
 
<?php
 
<?php
 
/** DEBUG */
 
/** DEBUG */
$GLOBALS['TL_BODY'][] = '
 
<style>
 
  pre.sf-dump .sf-dump-key {
 
    color: beige;
 
  }
 
</style>
 
';
 
 
 
if(sha1(session_id().(!Config::get('disableIpCheck') ? Environment::get('ip') : '').'BE_USER_AUTH') == Input::cookie('BE_USER_AUTH'))
 
if(sha1(session_id().(!Config::get('disableIpCheck') ? Environment::get('ip') : '').'BE_USER_AUTH') == Input::cookie('BE_USER_AUTH'))
 
{
 
{
 
   $this->dumpTemplateVars();
 
   $this->dumpTemplateVars();
 +
 +
  $GLOBALS['TL_BODY'][] = '
 +
    <style>
 +
      pre.sf-dump .sf-dump-key {
 +
      color: beige;
 +
      }
 +
    </style>
 +
  ';
 
}
 
}
 
/** */
 
/** */
 
?>
 
?>
 
</source>
 
</source>
 +
[[Datei:DumpTemplateVars-output.png]]

Aktuelle Version vom 23. Januar 2019, 20:49 Uhr

betrifft
Contao Version 2, 3, 4

Template Variablen im FE anzeigen

Bei einer Fehlersuche kann es manchmal sinnvoll sein, sich sämtliche Daten eines Templates anzeigen zu lassen.


Nicht vergessen, den Code nach erfolgreicher Fehlersuche wieder aus dem Template zu entfernen! Die Ausgabe gibt möglicherweise die Zugangsdaten zur Datenbank (und beim SafeModeHack auch FTP) preis!

Darum auch möglichst NICHT in einem HTML-Kommentar ausgeben (wird zu leicht vergessen). Generell möglichst nur auf lokalen Systemen und nicht auf öffentlich zugänglichen Servern verwenden.

"Wichtig"


Contao 2, 3

Um sich die Daten anzeigen zu lassen, wird einfach folgender Code möglichst am Anfang des entsprechenden Templates eingefügt:

<?php $this->showTemplateVars() ?>

Noch mehr Informationen:

<?php echo $this->dumpTemplateVars() ?>

In beiden Varianten erfolgt die Ausgabe präformatiert (HTML-Tag pre).

Einzelne Variablen, welche unter $this->arrData liegen können wie folgt ausgegeben werden:

<?php echo $this->varname ?>

Die Ausgabe von showTemplateVars() kann mit FirePHP auch an die Firebug Console gesendet werden. Dann wird das Template Layout nicht tangiert. Mehr dazu: PHP_Debugging


Ergänzung von --Andreas Burg (Diskussion) 13:42, 5. Jul. 2017 (CEST)

"Information"


Einfach ist es auch die Contao-Funktion dump() zu benutzen.

<?php
  dump($this->arrData);
  dump($this->varname);
?>

$this->arrData zeigt alle Variablen, welche showTemplateVars() auch zeigt. dump() macht automatisch einen var_dump() auf einfache Variablen und ein print_r() auf Arrays und Objects. Ausgabe ist gewrappt in einem PRE-Tag.


Ergänzung zu Contao 4 von --Andreas Burg (Diskussion) 20:26, 23. Jan. 2019 (CET)

"Information"


Contao 4

In Contao 4 kann man dumpTemplateVars() benutzen (ohne echo), die Ausgabe ist formatiert.

<?php
  $this->dumpTemplateVars();
?>

Soll die Ausgabe nur erfolgen, wenn ein Admin im BE eingeloggt ist, kann man dies wie folgt erweitern.

<?php
/** DEBUG */
if(sha1(session_id().(!Config::get('disableIpCheck') ? Environment::get('ip') : '').'BE_USER_AUTH') == Input::cookie('BE_USER_AUTH'))
{
  $this->dumpTemplateVars();
}
/** */
?>

Die Ausgabe ist leider etwas unglücklich formatiert. Damit sich die Keys (Schlüssel) besser von den Values (Werten) unterscheiden, kann man das CSS noch ein wenig korrigieren.

<?php
/** DEBUG */
if(sha1(session_id().(!Config::get('disableIpCheck') ? Environment::get('ip') : '').'BE_USER_AUTH') == Input::cookie('BE_USER_AUTH'))
{
  $this->dumpTemplateVars();
 
  $GLOBALS['TL_BODY'][] = '
    <style>
      pre.sf-dump .sf-dump-key {
      	color: beige;
      }
    </style>
  ';
}
/** */
?>

DumpTemplateVars-output.png

Ansichten
Meine Werkzeuge

Contao Community Documentation

ich hook' mich gleich in die Abstraktion

Martin Mildner
Navigation
Verstehen
Verwenden
Entwickeln
Verschiedenes
Werkzeuge