Ich benutze Kohana, aber ich denke, dass diese Frage allgemeiner ist.
Ich habe die Formularvalidierung im Controller durchgeführt und es hat bisher gut funktioniert. Aber in letzter Zeit bin ich auf ein Problem gestoßen.
Ich habe ein Kommentarmodell, und ich sende Kommentare von ein paar verschiedenen Controllern dazu. Anstatt in jedem Controller einen Validator zu haben, habe ich ihn in das Modell eingefügt.
Das ist großartig, weil
Das ist scheiße weil
NACH ERFOLG
%Vor%Bei fehlgeschlagen
%Vor%Ich kann nicht anders, als zu denken, dass das falsch ist. Es fühlt sich falsch an.
Wenn ich es in der Steuerung mache, kann ich einfach
machen %Vor%Was mir besser scheint.
Gibt es einen besseren Weg, dies zu tun? Sollte ich im Controller oder in der Methode validieren? Werde ich verrückt?
Ich sehe ehrlich gesagt nichts falsch mit Ihrer Methode, Alex. Es scheint als würdest du es richtig machen. Du folgst dem DRY-Prinzip, das für mich normalerweise der Maßstab ist, um zu messen, ob ich etwas richtig mache, wenn es um MVC geht.
Ich glaube nicht, dass alle Validierungsregeln in das Modell aufgenommen werden können. Bei der Validierung dreht sich alles um die Form (oder die API). Tatsache ist, dass bei der Validierung Ihrer Daten die meisten Dinge vom Kontext abhängen.
Beispiel: Ist dies ein eingeloggter Benutzer, der die Aktion ausführt? Sie würden Ihre Authentifizierungsschicht nicht mit dem zu validierenden Modell verknüpfen. Also müssen alle Prüfungen in den Controller gehen. Das Modell ist kontextunabhängig; Die Form "gehört" zum Controller und ist kontextsensitiv.
Ich denke, dass per-form Validierungsregeln plus grundlegende In-Model-Prüfungen für wohlgeformte Daten der richtige Weg sind. Wenn Sie Auth :: instance () oder Session :: instance () in der Funktion validate () Ihres Modells aufrufen, dann machen Sie es falsch.
Fette Modelle. Kleine Controller. So habe ich es immer gemacht. Validierung für mich ist auf der Datenschicht. Die Datenschicht (zumindest für mich) ist das Modell. Normalerweise benutze ich CakePHP als mein MVC-Framework ... Vielleicht liegt meine Validierung deshalb am Modell. Es ist CakePHP's Art.
Ich bevorzuge es, mich nicht über Gefühle zu wiederholen, mach die Methode. Außerdem ist das Array nützlich, da Sie die Fehler aus dem Array in einer Ansicht anzeigen können, wenn Sie möchten. Ich habe kohana nicht verwendet, aber die Validierungsmethode, die ich in ASP.NET MVC verwendet habe, liefert mir eine ähnliche Liste und ich kann dem Benutzer dann zeigen, was genau falsch ist.
Ich mache auch eine Validierung im Modell. Die meisten Modeling-Bibliotheken wie ORM, Auto_Modeler usw. unterstützen auch die Validierung. BTW es ist schneller, wenn Sie auf dem #kohana Kanal auf FreeNode (irc.freenode.net) fragen. Wir (normalerweise) beißen nicht:)
Tags und Links php model-view-controller validation kohana