Funktion init() und render()


#1

Hallo liebe Community,
eine kurze Verständnisfrage bzw. habe ich es richtig verstanden, dass in den controller-Klassen die Funktion init() - fals vorhanden - beim Klassenstart aufgerufen wird, und die Funktion render() nach dem sozusagen Abarbeiten aufgerufen wird, um Daten an das Template zu übergeben?
danke und lg
Stephan


#2

init ja beim Start, render vor dem Aufruf des Templates, render gibt den Namen des Templates zurück das dann von Smarty geparst wird. Da kann man Daten übergeben, meistens ist es aber besser vom Template aus den Controller aufzurufen ($oView->methode()) und sich von dort die Daten zu holen. Bei init und render ist es wichtig dass immer auch die parent-Methode aufgerufen wird, schau mal in oxubase und oxview dann siehst du was da genau passiert.


#3

Gibt es auch eine Methode, die stets NACH dem Rendering aufgerufen wird?


#4

Was willst du erreichen?


#5

Bestimmte Werte aus der Session löschen, wenn ein Bestellvorgang beendet wurde. Dies geschieht bisher in der init-Methode des ThankYou-Seiten-Controllers, was Probleme macht, da innerhalb des Template-Renderings noch auf diese zugegriffen wird (für Tracking). Letzteres ist sicherlich nicht der Eleganz letzter Schluss, aber grad kurzfristig nicht zu ändern. Daher muss das Aufräumen der Session nach dem Template-Rendering erfolgen.


#6

möglich wäre eine extra Funktion zum Aufräumen der Session variablen, die am Ende von Tracking Code aufgerufen wird.


#7

oxconfig::pageClose() wäre eine Möglichkeit.