Ich bin seit einiger Zeit ein PHP-Entwickler, aber bis heute habe ich keinen einfachen Weg gefunden, um Formulare zu verarbeiten (auch Normalisieren, Bereinigen, Validieren, Befüllen und Anzeigen von Formularen und entsprechende Feldfehler).
>Ich weiß, dass die meisten PHP-Frameworks heutzutage diesen Job erleichtern, aber irgendwie habe ich keine Lust, meinen gesamten Code auf eines dieser Frameworks zu portieren, und ich kann nicht ganz nachvollziehen, wie die Formularvalidierung in Django implementiert ist Beispiel (Ich weiß, es ist Python, aber ich mag ihre Vorgehensweise sehr), also würde ich den besten Weg finden, hier die Art und Weise zu schreiben, wie ich eine einfache Form verarbeite und vielleicht könnt ihr mich in die beste Richtung weisen.
%Vor% Wie Sie sehen können, soll dies ein einfaches Kontaktformular sein, aber es nimmt das Leben aus mir heraus, um es zu validieren. Ich habe einige Designmuster untersucht (Beobachter, Fabrik), aber ich bin nicht sicher, ob und In welcher Weise sollte ich sie umsetzen?Sie könnten eine abstrakte Basisklasse für alle Ihre Formulare, Klassen für Feldtypen und eine statische Klasse nur für die Validierung der Werte verschiedener Typen erstellen (validateString, validateHtml, validateEmail, validateNumber, Datum usw., nur die Methoden ..) . Wenn Sie Ihr Formular definieren, würden Sie definieren, welche Feldobjekte es verwenden würden, sodass die Form- & gt; validate () -Methode das Feld- & gt; validate () aufrufen und den gefilterten Wert oder die Fehlermeldung zurückgeben würde. Geben Sie Standardfehlermeldungen für die Felder an, geben Sie jedoch eine Option zum Überschreiben an, wenn Sie Felder in Ihrer Formularklasse definieren.
Oh, und lass das $ _POST-Ding. Lesen Sie den Beitrag einmal, geben Sie ihn einmal an die Formularvalidierung weiter und arbeiten Sie dann an den Werten für das gefilterte Feld.
Außerdem gibt es verschiedene Möglichkeiten, die Formularvalidierung abhängig von Ihren Anforderungen und der Architektur Ihrer Anwendungen zu erreichen. Es kann schwierig sein, einen Allzweckvalidierer zu erstellen, wenn Sie verschiedene Ansätze für Ihr Anwendungsdesign haben. Wählen Sie einen Weg, Ihre Arbeit zu erledigen und bleiben Sie dabei (unabhängig davon, ob es sich um ein fertiges Framework oder Ihren eigenen Code handelt) oder welche Super-Duper-Form-Validierung Sie schreiben, es wird in späteren Projekten keinen Sinn ergeben.
>Eins mehr: wie Django? Gut! Beginnen Sie also mit der Programmierung von Python in Django, Sie werden wirklich die Art und Weise ändern, wie Sie Ihre Arbeit erledigen können.
IMHO, der Versuch, eine Form als ein einziges Konzept zu behandeln, ist ein Fehler. Wenn Sie eine schichtartige Architektur für Ihre Anwendung haben, werden Formulare wahrscheinlich über diese hinwegreichen. Formulare haben eine Anwendungslogik (Controller-Ebene), sie haben eine visuelle Darstellung (Ansichtsschicht), sie haben einen Status (Anwendungsschichtmodell) und am Ende rufen sie normalerweise eine Art von Transaktionsskript (Modellschicht) auf.
Ich denke, dass es viel besser ist, die Idee einer "Form" als Einheit fallen zu lassen und stattdessen auf die drei Teile (Eingabeverarbeitung, Rendering und Modellschicht) als völlig getrennte Dinge zu fokussieren, die vielleicht (oder auch nicht) ) zufällig eng miteinander verwandt sind. Dies wird manchmal als das MVC-Muster bezeichnet, obwohl der Begriff mittlerweile so stark belastet ist, dass er eine Menge Dinge bedeuten könnte.
Ich weiß, es ist etwas, das du ausgeschlossen hast, und ich war wie du, bis vor einem Jahr, als ich mich gezwungen habe, etwas Obskures wie Qcodo zu lernen (php framework), und siehe da, ich kann heute nichts mehr tun. Es ist einfach wunderbar, eine Menge von sich immer wiederholender Last von den Schultern zu nehmen. Warum Qcodo? Zu dieser Zeit wollte ich die fortgeschrittenste lernen, da ich bereits lerne, also suchte ich nach dem breitesten Funktionsumfang, den Qcodo zu bieten schien. Heute weiß ich nicht, welches das heißeste ist, aber für mich erfüllt Qcodo immer noch alle meine Bedürfnisse.
Tags und Links php forms validation