Eigene Funktion in eigenem Modul wird nicht gefunden

Dank toller Hilfe aus dem Forum baue ich gerade meine alten Module nach OXID6-Standards neu.
Jetzt habe ich ein prinzipiell funktionierendes Modul, das die Funktion checkValues aus \OxidEsales\Eshop\Application\Model\User erweitert.
Sobald ich daraus aber eine Funktion aufrufe, die ich innerhalb des Moduls selbst definiert habe, wird diese angeblich nicht gefunden: “Function ‘checkZipCode’ does not exist or is not accessible!”
Die Funktion ist so angelegt:

protected function _checkZipCode( $aInvAddress )

Der Aufruf in “function checkValues” sieht so aus:

$oInputValidator->_checkZipCode( $aInvAddress );

Alternativ hab ich es mit einer “public”-Funktion versucht, das macht aber keinen Unterschied.
Hat jemand eine Idee, was sich hier in OXID 6 geändert hat?

Problem gelöst: Ich musste die neue Funktion analog zu den anderen InputValidator-Funktionen in eine separate Klasse packen.
Im Detail:
Eine neue Datei “InputValidator.php” im neuen Modul-Unterordner “/core” erstellen. Die beginnt so:

namespace floko\fkcustom6\Core;

class InputValidator extends InputValidator_parent
{

public function checkZipCode( $aInvAddress )
{

In der Metadata-Datei des Moduls habe ich unter “extend” hinzugefügt:
\OxidEsales\Eshop\Core\InputValidator::class => \floko\fkcustom6\Core\InputValidator::class

Jetzt klappt der Aufruf aus der anderen Modul-Datei (Function checkValues aus Class User) fehlerfrei!

2 Likes