Template Variablen anzeigen: Unterschied zwischen den Versionen

Aus Contao Community Documentation

(Die Seite wurde neu angelegt: „Category:Dev_Snippets Bei einer Fehlersuche kann es manchmal sinnvoll sein, sich sämliche Daten eines Templates anzeigen zu lassen. Um sich die Daten anzeig…“)
 
K (Contao 4)
 
(11 dazwischenliegende Versionen von 8 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
 +
{{AppliesTo
 +
|Version=2, 3, 4
 +
}}
 
[[Category:Dev_Snippets]]
 
[[Category:Dev_Snippets]]
Bei einer Fehlersuche kann es manchmal sinnvoll sein, sich sämliche Daten eines Templates anzeigen zu lassen.  
+
 
Um sich die Daten anzeigen zu lassen, wird einfach folgender Code möglichst am Anfang des entsprechenden Templates einfügen:
+
= Template Variablen im FE anzeigen =
<pre><?php $this->showTemplateVars(); ?></pre>
+
 
Es sollte nicht vergessen werden, den Code nach erfolgreicher Fehlersuche wieder aus dem Template zu entfernen.
+
Bei einer Fehlersuche kann es manchmal sinnvoll sein, sich sämtliche Daten eines Templates anzeigen zu lassen.
 +
 
 +
{{msgImportant|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.'''
 +
}}
 +
 
 +
== Contao 2, 3 ==
 +
 
 +
Um sich die Daten anzeigen zu lassen, wird einfach folgender Code möglichst am Anfang des entsprechenden Templates eingefügt:
 +
<source lang="php"><?php $this->showTemplateVars() ?></source>
 +
 
 +
Noch mehr Informationen:
 +
<source lang="php">
 +
<?php echo $this->dumpTemplateVars() ?>
 +
</source>
 +
 
 +
In beiden Varianten erfolgt die Ausgabe präformatiert (HTML-Tag pre).
 +
 
 +
Einzelne Variablen, welche unter $this->arrData liegen können wie folgt ausgegeben werden:
 +
<source lang="php">
 +
<?php echo $this->varname ?>
 +
</source>
 +
 
 +
----
 +
 
 +
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]]
 +
 
 +
{{msgInfo|Ergänzung von --[[Benutzer:Andreas|Andreas Burg]] ([[Benutzer Diskussion:Andreas|Diskussion]]) 13:42, 5. Jul. 2017 (CEST)
 +
}}
 +
Einfach ist es auch die Contao-Funktion '''dump()''' zu benutzen.
 +
<source lang="php">
 +
<?php
 +
  dump($this->arrData);
 +
  dump($this->varname);
 +
?>
 +
</source>
 +
'''$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.
 +
 
 +
{{msgInfo|Ergänzung zu '''Contao 4''' von
 +
--[[Benutzer:Andreas|Andreas Burg]] ([[Benutzer Diskussion:Andreas|Diskussion]]) 20:26, 23. Jan. 2019 (CET)
 +
}}
 +
 
 +
== Contao 4 ==
 +
 
 +
In '''Contao 4''' kann man '''dumpTemplateVars()''' benutzen (ohne echo), die Ausgabe ist formatiert.
 +
<source lang="php">
 +
<?php
 +
  $this->dumpTemplateVars();
 +
?>
 +
</source>
 +
 
 +
Soll die Ausgabe nur erfolgen, wenn ein Admin im BE eingeloggt ist, kann man dies wie folgt erweitern.
 +
<source lang="php">
 +
<?php
 +
/** DEBUG */
 +
if(sha1(session_id().(!Config::get('disableIpCheck') ? Environment::get('ip') : '').'BE_USER_AUTH') == Input::cookie('BE_USER_AUTH'))
 +
{
 +
  $this->dumpTemplateVars();
 +
}
 +
/** */
 +
?>
 +
</source>
 +
 
 +
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.
 +
<source lang="php">
 +
<?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>
 +
  ';
 +
}
 +
/** */
 +
?>
 +
</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

Programmierer brauchen viel Bit, auch wenn es Beck's ist.

Christian Schiffler
Navigation
Verstehen
Verwenden
Entwickeln
Verschiedenes
Werkzeuge