Ich versuche die setUpEnvironment in der Application.inc.php zu überschreiben es klappt leider nicht. Die Datei liegt hier /GXModules/MeinTheme/Steuer/Shop/Overloads/Application/AffiliateApplication.inc.php Und enthält den Code Code: <?php class AffiliateApplication extends AffiliateApplication_parent { protected function setUpEnvironment() { exit("sadasdfas"); $this->setMissingServerVariables(); $this->defineInitialConstants(); $this->setMemoryLimit(); $this->includeWrapperFunctions(); $this->initGXEngine(); $this->registerErrorHandler(); // register error handler with default settings $this->setTimezone(); $this->startStopWatch(); $this->registerAutoloader(); $this->initializeGlobalDebuggerObject(); $this->initializeGlobalPhpSelfVariable(); $this->includeFunctions(); $this->includeClasses(); $this->connectToDatabase(); $this->defineConstantsFromDbConfigurationTable(); $this->registerErrorHandler(); // register error handler with user settings $this->updateTimezone(DATE_TIMEZONE); $this->sanitizeRequestData(); $this->startSession(); $this->startTracking(); $this->initializeGlobalSeoBoostObject(); $this->setXSRFPageToken(); require_once __DIR__ . '/../includes/affiliate_application_top.php'; } }
Kann ich sie so überschreiben, dass es meinen Code unten anhängt oder muss ich sie komplett überschreiben?
Das ist der falsche Pfad: Richtig ist /GXModules/MeinTheme/Steuer/Shop/Overloads/AffiliateApplication/AffiliateApplication.inc.php Der Verzeichnisname muss immer dem Klassenamen entsprechen und immer daran denken, die neue (überladenene) Klasse darf nicht genauso heißen wie die alte Klasse,
Äh... nein. Im hohen Norden ist wohl Sonntag ;-) @jan_brand : Deine Struktur ist schon goldrichtig. Die Application.inc.php ist aber leider nicht überladbar, weil sie nicht über die MainFactory, sondern direkt instanziiert wird. Dir bleibt nur, den Originalcode zu ändern oder auf eine andere Klasse auszuweichen, falls möglich.
Okay, ich wusste da war noch was. Aber wenn die Klasse überladbar gewesen wäre, was ich nun echt nicht geprüft habe , dann wäre mein Hinweis mit dem Verzeichnis und Klassenname aber korrekt oder hat sich da etwas geändert, was ich nicht mitbekommen habe.
Der Verzeichnisname muss dem Namen der zu überladenden Klasse entsprechen und der Name der eigenen Klasse dem Dateinamen ohne Endung. Ich bin mir aber ganz sicher, dass Du das auch weißt, nur gerade nicht parat hast
@jan_brand Wenn du nur eine eigene Datei anhängen möchtest also ein require am Ende der Application ausführen willst, gibt es immer noch die ApplicationTopExtenderComponent. Das ist seit Jahren die gleiche Möglichkeit die ApplicationTop zu erweitern. Weitere Informationen findest du auf der Developer Seite: (Link nur für registrierte Nutzer sichtbar.) (Link nur für registrierte Nutzer sichtbar.) In deinem Beipspiel legst du eine Datei im Ordner /GXModules/MeineFirma/MeinModul/Shop/overloads/ApplicationTopExtenderComponent/Meine_ApplicationTopExtenderComponent.inc.php mit folgendem Inhalt an: PHP: <?phpclass Meine_ApplicationTopExtenderComponent extends Meine_ApplicationTopExtenderComponent_parent { public function proceed() { require_once __DIR__ . '../includes/affiliate_application_top.php'; }} Und Dateien die nur im Modul benutzt werden legst du am besten im Ordner /GXModules/MeineFirma/MeinModul/Shop/includes/ ab. Bitte keine eigenen oder fremde Dateien in den Orignalverzeichnissen ablegen. Alles was außerhalb von GXModules liegt könnte bei Updates oder Änderungen verloren gehen oder in zukünftigen Versionen nicht mehr geladen werden. Wir empfehlen daher alles zu einem Modul innerhalb des GXModules Verzeichnis zu lassen.
Vielen Dank für eure Hinweise! Habe auch grad rausgefunden, dass man ApplicationPrimalTopExtenderComponent dazu verwenden kann.
Das ist genau das, was ich oben als erstes geschrieben habe. Das war bei der Anfrage soweit korrekt, darum bin ich darauf nicht eingegangen, sondern habe nur den Hinweis gegeben, das der alte und neue Klassenname nicht gleich sein darf. Das einzige, wodrauf ich nicht geachtet hatte, war dass die Klasse nicht überladbar ist. Diese Aussage ist damit aber dann falsch, weil die Klasse "AffiliateApplication" ist und nicht "Application". Ich schätze mal, bei Dir ist auch Sonntag
Nein, er will ja die Application überladen. Deshalb ist sein Overloads/Application/AffiliateApplication.inc.php vom Prinzip her richtig und Dein Overloads/AffiliateApplication/AffiliateApplication.inc.php falsch. Ist ja auch völlig egal, wenn es so oder so nicht funktioniert. Dann ist eben überall Sonntag
Okay und guten Morgen. Scheinbar war das gestern kein guter Sonntag. Du hast recht, ich habe nicht richtig gelesen. Ich war der Meinung die Klasse "AffiliateApplication" sollte überladen werden. Wenn man genau liest, was ich am Sonntag wohl nicht getan habe, dann hätte man den Irrtum bemerkt.