Ich habe folgendes Problem: In einer Extension (wurde bei uns entwickelt, leider ist der damalige Entwickler nicht mehr bei uns.) ist in den piVars ein Wert, und ich bekomme auf biegen und brechen nicht heraus, wo er herkommt.
Daher meine Frage, aus welchen Quellen genau können sich die piVars zusammensetzen?
$_GET und $_POST kann ich schon einmal definitiv ausschließen.
Wenn jemand einen Link zu einer entsprechenden Doku hat, würde ich den auch gerne nehmen.
Danke schon mal für jede Hilfe.
// 1.
$_GET['tx_extension_pi1']['bla'] = 'wert1';
echo $this->piVars['bla']; // wert1
// 2.
$_GET['tx_extension_pi1']['post'] = 'wert2';
echo $this->piVars['bla']; // wert2
// 3.
$piVars['bla'] = 'wert3';
echo $this->piVars['bla']; // wert3
einpraegsam.net schrieb
// 2.
$_GET['tx_extension_pi1']['post'] = 'wert2';
echo $this->piVars['bla']; // wert2
Ganz sicher?
....
Als Antwort auf die Ausgangsfrage:
vermutlich wird die Variable irgendwo im TypoScript gesetzt,
such mal nach "_DEFAULT_PI_VARS" 😉
Danke schon mal für die Tipps.
Habe mir mal die gesamte $this->conf ausgeben lassen. Da stehen auch ein paar Werte in der '_DEFAULT_PI_VARS.', aber der gesuchte ist leider nicht dabei.
Gäbe es sonst noch mögliche Quellen? Cookies oder Sessiondaten vielleicht? (Obwohl ich die eigentlich schon einmal durch rigoroses Löschen ausgeschlossen hatte).
Es wird auch definitiv nicht im Plugin selbst gesetzt, der Wert ist schon in der ersten Zeile der main() Funktion vorhanden.
Bin ansonsten mit meinem Latein auch mehr oder weniger am Ende, ich komme einfach auf keine weiteren Möglichkeiten, die ich nicht überprüft hätte.
schau mal im Source nach sowas
$this->piVars['xyz'] = ...
Ansonsten such mal den Quelltext nach dem Namen der Var ab. Oder das ist irgendwo in einem Ext-template, also auch auf der Seite schauen, wo das auftritt, ObjectBrowser hilft da.
Ok, das Problem an sich habe ich soeben lösen können. Es gab einen Fehler in der Datenbankstruktur. Nachdem ich den behoben habe läuft das ganze wieder tadellos, und die fragliche piVar ist auch nicht mehr gesetzt.
Trotzdem würde ich gerne verstehen, wie das ganze zu stande kam.
Die Extension besteht aus zwei Plugins, "pi1" und "pi2". Das aufgerufene Plugin war pi1. Innerhalb des Codes von pi1 wird an keiner Stelle die pi2 auch nur erwähnt. Allerdings gibt es Datenbankabfragen, die zu dem Problem hätten führen können, ausschließlich in der pi2.
Kann es sein, dass trotzdem der Code der pi2 trotzdem ausgeführt wird? Ist das irgendwo nachvollziehbar?
piVar ist eine var die ausschliesslich aus GET/POST stammt. Natürlich kann auch die pi2 einen Link generieren, der die pi1 anspricht (und umgekehrt).
piVars haben nichts mit DB-Abfragen zu tun.
steffenk schrieb
piVars haben nichts mit DB-Abfragen zu tun.
Ja, das ist mir schon klar.
Es geht mir nur um folgendes:
Auf einer Seite wird ausschließlich das Plugin pi1 meiner Extension eingebunden.
Kann es sein, dass dies implizit auch in irgendeiner Weise dazu führt, dass ein weiteres Plugin der gleichen Extension mit aufgerufen, initialisiert oder ähnliches wird?
Ich komme darauf, weil scheinbar ein Wert in den piVars vor Aufruf des Plugins pi1 manipuliert wird. Wofür eigentlich nur das Plugin pi2 (denn hier wird der fragliche piVars Wert anhand von Datenbankabfragen manipuliert. Das es zwischen piVars und DB Anfragen sonst keine Verbindung gibt ist mir klar) in Frage kommt. Das aber an dieser Stelle eigentlich gar nicht aufgerufen werden sollte.
das ist möglich, Du erkennst das an include-Anweisungen in der pi1
Ok, das ganze hat sich soeben vollständig aufgeklärt. Ich habe auf der falschen Seite nachgesehen. Es wird tatsächlich das Plugin pi2 geladen, die dann wiederum eine Instanz der pi1 erstellt und den fraglichen piVars Wert direkt manipuliert.
Vielen Dank auf jeden Fall für die Hilfestellungen. 🙂