Registrierungsfelder auf Eingabelänge und Mindestanzahl von Zeichen überprüfen

  • Hallo,


    ich benutze Joomla 3.4.1 und Virtuemart 3.0.3.


    Nun möchte ich gerne wenn ein User sich neu Registrieren möchte das er bei dem Passwortfeld mindestens 5 Zeichen eingeben muss und z.b auch mindestens 2 Zahlen.


    Auch das Benutzernamen Feld sollte mindestens 3 Zeichen enthalten. Wo kann die Datei für das Registrierungsformular finden wo ich dann diese Abfrage z.b. mit Javascript lösen kann?


    Ich benutze auch das Onepagecheckout Plugin. Dort konnte ich die Mindestanzahl der Zeichen unter 'Kundenfelder' in VM 3 anpassen.


    Nur wie ich das für das normale Registrierungsformular löse bin ich noch nicht hinter gekommen.:confused::confused:


    Vielen Dank

  • Servus,


    wenn Du Dein SEF ausschaltest, kannst Du sehr schnell an der URL sehen, wo Du schauen musst.


    Die Frage ist, was ist das normale Registrierungsformular? Das von Joomla oder das von VM?
    Eigentlich sollte nur das von VM verwendet werden.


    z.Bsp.
    index.php?option=com_virtuemart&view=user&layout=edit&Itemid=113&lang=de


    Der URL nach ist das:
    components/com_virtuemart/views/user/tmpl/edit.php
    In der edit.php wird allerdings die edit_address.php aufgerufen.
    Das Muster der URL einmal verstanden, findet man eigentlich alles recht schnell, nur ab und an werden sublayouts in den Dateien aufgerufen.


    Das ganze dann am besten in einen Override. Override findest Du bei Google und in den docs.virtuemart.net.


    So short
    Stefan


    PS. evtl. einmal aktualisieren, wenn sich keine Produkte speichern lassen, das ging nach Update auf Joomla 3.4.1 nicht mehr in Verbindung mit früheren Versionen vor VM 3.0.6.irgendwas.

  • Danke für deine Antwort.


    Ja genau ich meine das VM Registrierungsformular.


    Ja die edit_adress.php habe ich auch schon in einem Override. Soweit so gut.


    Jetzt wird in der Zeile 46 $this->vmValidator(); aufgerufen.


    Das wird doch dann die überprüfung der Formularfelder sein,oder?


    Müsste ich damit dann meine Formularfelder auf Zeichenlänge, Mindestlänge und Eingabefehler prüfen?


    Wo finde ich die dazugehörige Javascript Datei wo die function vmValidator() aufgerufen wird?

  • Die Funktion ist hier definiert:


    /administrator/components/com_virtuemart/helpers/vmjsapi.php



    Die Formularüberprüfung kann man einfach durch ein JavaScript erledigen, das man in ein Modul setzt. Dieses Modul dann für die entsprechende Seite z. Bsp. im Footer aufrufen.
    Skripte finden sich sicher schon vorgefertigt über die Suchmaschine des Vertrauens.


    Hope it helps
    Stefan



  • Ich danke dir dafür.


    ja die Funktion habe ich jetzt auch gefunden in der vmjsapi.php.


    Jetzt habe ich hier https://docs.joomla.org/Client-side_form_validation gelesen das man die einzelnen Formularfelder mittels einer validierung über den 'Classennamen' überprüfen kann.


    Ich finde aber den VM3 Formularcode nicht bzw. komme nicht dahinter wie ich den einzelnen Feldern einen classe oder den classennamen erweitern kann.


    In den Kundenfeldern innerhalb der VM3 Komponente kann man keine Classennamen vergeben.




    Ich habe mal testweise in der edit_adresss folgenden Javascript Code ausprobiert. Leider ohne Erfolg.


    Zitat

    var elem = document.getElementById('email_field');
    elem.classname = elem.classname + "validate-email";


    Wo ist der Formularcode der in der edit_address_userfield.php in Zeile 77 per <?php echo $field['formcode'] ?> aufgerufen wird.


    ODer müsste ich die edit_address_userfield.php komplett selber anpassen? Für Joomla gibt es ja ein Userplugin. Gibt es sowas denn nicht auch für VM3.


    Ich finde das dieses System mit den einzelnen Formularfeldern und deren Erweiterung oder neuen Anlegung nicht gerade Benutzerfreundlich gemacht ist ;)


  • Ich finde das dieses System mit den einzelnen Formularfeldern und deren Erweiterung oder neuen Anlegung nicht gerade Benutzerfreundlich gemacht ist ;)


    Benutzerfreundlich? Na sicher, und VM wird immer benutzerfreundlicher.


    Du kennst die Optionen unter VirtueMart - Konfiguration - Kundenfelder. Da kann man einzelne Formularfelder freigeben oder erforderlich machen.


    So nebenbei:
    Ich bin sehr froh, dass Du "Classennamen" zuvor in Anführungszeichen gesetzt hast. Die heißen auf Deutsch Klassennamen, alles andere Denglisch schnell wieder vergessen und niemals ohne Anführungszeichen schreiben, sonst könnte noch jemand auf die Idee kommen, diese Namen zu übernehmen. class-Namen könnte ich noch verkraften. ;-)
    Die sehen im Code so aus: <span class="klasse_mit_tollen_dingen">Tolles Ding</span>
    Das class-Attribut gibt die Klasse an.


    Nun aber zum Formular. Die input-Felder der Registrierung enthalten id-Attribute, damit lässt sich die Formularüberprüfung hervorragend auf genau ein Element beschränken.
    Zum Bleistift:
    <input type="text" maxlength="32" class="required" value="Mein Name" size="30" name="first_name" id="first_name_field" aria-required="true" required="required" aria-invalid="false">
    Das ist zum Beispiel für den Vornamen. Die ID ist "first_name_field", da kann man jetzt ein jQuery bzw. JavaScript dran aufhängen und schon ist alles in Butter.


    Da muss man nichts an VM basteln, einfach ein Joomla-Text-Modul erstellen, JavaScript dort hinein und dem Registrierungsmenü zuweisen und in die Position footer oder so.
    Einfach einmal Google nach jQuery script download form validation fragen und die ID anpassen.


    So short
    Stefan


  • Erstmal vielen Dank für deine Antwort.


    Ich Entschuldige mich auch für mein Denglisch ;)..Ich weis was du meinst.



    Zu der Benutzerfreundlichkeit meinte ich speziell die Kundenfelder erstellung. Da man dort ja keine Klassennamen vergeben kann.



    Ich bin aber mit Google endlich fündig geworden und zwar hier:Webworking | Tutorial zur Eingabevalidierung von Formularen mit Hilfe von jQuery


    Ich musste mir dazu aber noch das Jquery Plugin downloaden und in meine index.phpo einbinden.




    Das überprüfen des Feldes Email und der anderen Felder als Pflichtfeld mit:



    funktioniert soweit.


    Jetzt steh ich vor dem Problem der anderen Felder wie z.B: die Passwort-Felder auf Mindestlänge.



    Mit diesem Code:



    kommt leider keine weitere Fehlermeldung das ich mind. 5 Zeichen eingeben soll.



    Könnte es da einen Konflikt mit der bereits geladenen validate.js vom Joomla System geben?



    Aber ich denke mal ein paar Code abänderungen sollten dann endlich zum Ziel führen ;)


    Vielen Dank

  • Ich habe das PRoblem gelöst.


    Mit folgendem Code lässt sich das Formular validieren:


    Einfach in ein K2 Modul packen (falls man die K2 Erweiterung installiert hat), Eigener Code und in den Footer als modulposition.


    Man muss aber noch die jquery.validate.js downloaden und in seiner index.php im head Bereich einbinden damit dieser jQuery Code funktioniert und das Formular validiert wird.

  • Gute Arbeit,
    sowas ähnliches kann man auch fürs joomla JS machen. Aber das ganze für jQuery klingt gut. Könnt eventuell im Core landen.


    Danke :)


    Ich kenne mich nicht so gut mit Javascript aus und wusste deshalb auch nicht genau wie ich die vmjsapi.php dementsprechend im Code anpasse um das Formular zu validieren. Deswegen habe ich mir einen Jquery Code vorgenommen und den dementsprechend für mich selbst angepasst.


    Funktioniert und wieder was dazu gelernt. Learning by Doing ;)


    Aber wenn das im Core landet bin ich natürlich begeistert.

  • Ich meinte Joomla bietet auch so eine Art Api wie jQuery. Eventuell ists sogar dasselbe. Mir gefällt die jQuery Lösung eh besser, weil wir versuchen unsere Abhängigkeit von Joomla mehr und mehr zu lösen. Da wir eh auf jQuery setzen.


    Btw, die jquery.validation.js ist teil des VM-Cores und sollte geladen sein. Eventuell nutzen wir das bereits, aber nur für das required, da der Rest für eine allgemeine Lösung wieder mehr Arbeit erfordert.


    Für den Core is noch deutlich mehr zu tun.
    Einmal müssen die Language keys noch implementiert werden,
    dann The VM JavaScript Handler - VirtueMart Documentation das kannst du bereits anwenden.
    und dann in den userfields die verschiedenen Option, zumindest teilweise und zack isses nen Haufen arbeit, aber deine Arbeit ist ein netter Anfang.