Form Page - Validierung von Eingaben

  • Guten Tag,


    Ich arbeite momentan an einer Form Page. Die Übergabe von Werten funktioniert, ich möchte aber unter anderem doppelte und zu kurze/lange Einträge unterbinden.


    Ich habe mich an der RegisterForm.class.php und der register.tpl orientiert und dementsprechend unter anderem folgende Dateien angelegt/kopiert/angepasst:







    Allerdings funktioniert es nicht und ich kann sowohl einstellige Werte als auch Duplikate per Form in die Datenbank hinzufügen.
    Ich vermute er ruft validateValuename erst gar nicht auf, allerdings erschließt sich mir nicht wieso, da ich mich ja an obig genannten Dateien orientiert habe.


    Also habe ich wohl irgendwo etwas falsch gemacht und wollte nun hier fragen, ob mich jemand erleuchten kann, was genau ich vergessen habe bzw. falsch gemacht habe. :)


    Viele Grüße


    Trollgon

    • Official Post

    An welcher Stelle rufst du denn validateValuename() überhaupt auf? So wie ich das sehe fehlt dir folgender Teil:


    PHP
    public function validate() {
    	parent::validate();
    
    	$this->validateValuename();
    }
  • Ein paar Wochen später, hätte ich noch eine Verständnisfrage:


    Wo wird definiert, dass eine Funktion in einer Klasse, die von AbstractPage abhängig ist, aufgerufen wird?


    Die Funktion "validate()" wird es ja offensichtlich. Meine Funktion "validateValuename()" hingegen nicht. Warum?

    • Official Post

    Reihenfolge der Methoden-Aufrufe:


    \wcf\page\AbstractPage

    • readParameters()
    • show()
    • setActiveMenuItem()
    • checkModules()
    • checkPermissions()
    • readData()
    • assignVariables()


    \wcf\page\AbstractForm (Methoden die durch diese Klasse hinzukommen entsprechend markiert)

    • readParameters()
    • show()
    • setActiveMenuItem()
    • checkModules()
    • checkPermissions()
    • readData()
    • submit() <--
    • readFormParameters() <--
    • validate() <--
    • save() <--
    • assignVariables()



    In deinem Fall wird deine Methode nicht aufgerufen, weil du sie nicht selbst aufrufen lässt. Dazu musst du die validate()-Methode überschreiben, eben genau dies schrieb ich oben bereits!

Participate now!

Don’t have an account yet? Register yourself now and be a part of our community!