Folgendes Problem: Ich möchte die Funktion "validateVatNumber" überladen. Dafür habe ich (OldSchool) im Verzeichnis "GXUserComponents/overloads/" ein Unterverzeichnis "CustomerInputValidator" für die Klasse angelegt. Dort habe ich die Datei "KS_OL_CustomerInputValidator.inc.php" mit dem folgenden Inhalt erstellt. PHP: <?phpclass KS_OL_CustomerInputValidator extends KS_OL_CustomerInputValidator_parent public function validateVatNumber($p_vatNumber, $p_countryId, $p_isGuest) { $this->errorStatus = true; $this->errorMessageCollection->setValue('error_vat', "Geänderter Ausgabetext"); return false; }} Normalerweise müsste jetzt bei der Registrierung bei der USt-ID immer eine Fehlermeldung mit dem Text "Geänderter Ausgabetext" erscheinen, da ich den errorStatus auf true setze und errorMessageCollection auf den besagten Text geändert habe. Passiert aber nicht, es läuft so, als ob die überlade Funktion gar nicht exisitert. Baue ich die Änderung in die Originalfunktion ein, dann passiert genau das, was ich erwartet habe, es erscheint immer mein geänderter Text. Setze ich in der "Überlagerungsfunktion" einen Fehler ein, dann bleibt der Shop dort hängen, was darauf hinweist, dass die neue Funktion geladen wird. Ich verstehe das Ganze nicht mehr, hat jemand eine Idee, wo mein Denkfehler ist?
Moin, ich denke, das Problem ist, dass der CustomerInputValidator nicht direkt verwendet wird. Die Klasse wird von CustomerRegistrationInputValidatorService und CustomerAccountInputValidator beerbt; die wiederum müssten dann auch überladbar sein.
Was heisst das jetzt für mich? Muss ich nur das Verzeichnis anders benennen oder muss ich die anderen Klassen mit einen Dummy überladen?
Hat sich erledigt, habe selbst herausgefunden, das ich das Verzeichnis nach der übergeordneten Klasse (CustomerRegistrationInputValidatorService) benennen muss.