Ich bin mir da jetzt nicht ganz sicher, aber ich glaube man kann auch "loadForm()" in einem Modul verwenden. Ich habe es aber ehrlich gesagt noch nie gemacht oder probiert. Das Formular erstellt man dann in einer XML mit den Feldern uns lässt die Felder über "renderfield" erstellen.
Der Vorteil wäre, dass Du Dich um die Prüfungen nicht mehr ganz so stark kümmern musst. Beim Feldtyp "email" prüft Joomla die korrekte Eingabe.
https://docs.joomla.org/Basic_form_guide
https://docs.joomla.org/Advanced_form_guide
Wenn Du die Formular-Felder selbst einbaust, dann musst Du sämtliche Eingaben prüfen, bevor sie weiterverarbeitet werden. Ansonsten kann man ganz schnell Schadcode einfangen. Bei der E-Mail nicht nur prüfen, ob ein @ vorhanden ist, sondern den gesamten Inhalt prüfen, ob dieser eine gültige Mail Adresse darstellt.