gelöst function validateVatNumber wird nicht überladen

Thema wurde von Kai Stejuhn, 6. April 2018 erstellt.

  1. Kai Stejuhn

    Kai Stejuhn Beta-Held

    Registriert seit:
    26. September 2014
    Beiträge:
    1.409
    Danke erhalten:
    709
    Danke vergeben:
    92
    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:
    <?php
    class 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?
     
  2. Anonymous

    Anonymous Erfahrener Benutzer
    Mitarbeiter

    Registriert seit:
    22. Juni 2011
    Beiträge:
    4.760
    Danke erhalten:
    1.748
    Danke vergeben:
    137
    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.
     
  3. Kai Stejuhn

    Kai Stejuhn Beta-Held

    Registriert seit:
    26. September 2014
    Beiträge:
    1.409
    Danke erhalten:
    709
    Danke vergeben:
    92
    Was heisst das jetzt für mich? Muss ich nur das Verzeichnis anders benennen oder muss ich die anderen Klassen mit einen Dummy überladen?
     
  4. Kai Stejuhn

    Kai Stejuhn Beta-Held

    Registriert seit:
    26. September 2014
    Beiträge:
    1.409
    Danke erhalten:
    709
    Danke vergeben:
    92
    Hat sich erledigt, habe selbst herausgefunden, das ich das Verzeichnis nach der übergeordneten Klasse (CustomerRegistrationInputValidatorService) benennen muss.