Registrierung um E-Mail Eingabefehler- Check/Kontrolle (2mal eingeben) erweitern

Hallo zusammen,

ich habe gestern versucht ein altes Modul von mir auf die 4.X zu portieren.

Das Modul sorgte dafür, dass Kunden bei der Registrierung im Shop ihre E-Mail Adresse 2mal eingeben müssen. Dies soll Rechtschreibfehler verhindern und funktionierte scheinbar ganz gut.

Die Erweiterung des Views selbst ist kein Problem, allerdings werden die Fehlermeldung (z.B. PW und PW-Bestätigung sind nicht gleich) wohl nun als Exception geworfen und ich frage mich gerade wo ich dort am besten ansetze. Ich müsste dann ja wahrscheinlich auch eine neue Exception einfügen?

Falls jemand vielleicht ein Beispiel hat, würde ich mich sehr freuen :slight_smile: (ansonsten probiere ich mal selbst weiter :wink: ).

Bearbeitungsfeld gefunden…

Hallo m10g,

willst Du es noch verraten?

Danke und Gruß


Marco Steinhäuser
Community Guide
OXID eSales AG

Hallo Marco,

das “gefunden” bezog sich auf die Editierfunktion des Forums (Rechtschreibfehler). Das eigentliche Probleme bin ich aus Zeitmangel bisher noch nicht weiter angegangen. Wenn ichs hab, poste ich es hier.

Würde mich auch interessieren.

mal wieder eine späte Antwort … aber ich hoffe noch nicht zu spät :slight_smile:

Der Punkt mit den Exceptions ist genau richtig!

Ich vermute Du erweiterst die “checkValues” Methode in der oxuser Klasse und fügst eine “_checkMailIdentical” (o.ä.) Methode hinzu. In der überprüfst Du einfach ob die beiden Felder identisch sind und wirfst im Falle das nicht einfach eine oxInputException. Dieser Exceptions gibst Du dann noch eine Message (setMessage()) mit deine Sprachkonstanten die Du natürlich noch in der "cust_lang.php (im Ordner /out/basic/de) einträgst. Nimm einfach die “_checkPassword” Methode als Vorbild.

Dann musst du noch … nix mehr :slight_smile: Das wars nämlich schon. Das Modul dürfte nicht mehr als 10 Zeilen Code verbrauchen :wink: Probiert hab ich es nicht aber wenn es klappt bzw. noch was fehlt berichte es einfach hier oder noch besser mach doch ein Open Source Modul daraus und biete es zum Download an. Ein cooles Feature ist es allemal :slight_smile:

Grüße

Mathias

Hallo Mathias,nachdem ich deine Antwort gelesen hatte, hab ich es sofort implementiert :). Vielen Dank!Ich stimme mit dem Auftraggeber ab, ob er was dagegen hat wenn ich das hier poste, da dein Ansatz aber fast die Lösung war, glaube ich nicht.Eine Frage noch wenn du magst:Die Erweiterung der Klasse oxUser ist ja simpel und clean, da ich einfach zuerst oder vorher parent::checkValues aufrufe und so 100% updatesicher bin.Die Klasse oxcmp_user muss aber auch erweitert werden, damit überhaupt das zweite E-Mail Feld übergeben wird. Gibt es da eine andere Möglichkeit als die komplette createUser-Methode zu kopieren und die Zeile und den Parameter für das neue Feld einzufügen und den Rest 1:1 beizubehalten?Bei Updates müsste man das ja im schlimmsten Falle immer wieder komplett kopieren und dann nur die beiden Kleinigkeiten ändern.Aber irgendwie sehe ich da keine Lösung das mit ein paar Zeilen einfach in ein Modul zu kapseln. Naja vielleicht wird das Problem klarer wenn ich den Source poste, aus meinen Geschreibe wird man wohl nicht so schlau…Viele Grüße und Danke,m10g / Marc

na wie ich schon meinte ich hab meinen Ansatz nicht ausprobiert :wink: Denn sonst hätte ich gemerkt das ich auch die “createUser” modifizieren muss um die entsprechenden Daten weiter zu leiten.

Also nun ein leicht modifizierter Ansatz denn mehrere Zeilen Code wollen wir nie kopieren wegen der Updatefähigkeit.

Ich schlage vor du bauste eine “public” Methode in Deine erweiterte oxuser ein, welche auf gleiche Mails testet und entsprechende Exceptions wirft. Dann machst Du eine Erweiterung der oxcmp_user und erweiterst die “createUser”. Dort holst Du Dir beide Mailfelder und übergibst sie in einem try-catch Block an Deine Testmethode. Das catch könnte so aussehen

} catch( oxInputException $oEx ){ oxUtilsView::getInstance()->addErrorToDisplay( $oEx, false, true ); return false; }

Danach noch ein return parent::createUser() und gut …

Hoffentlich passt das jetzt :wink:

GrüßeMathias