3 Stimmen

Was sollte in CodeIgniter-Modellen enthalten sein?

Ich habe das Modell immer als etwas verwendet, um Datenbankabfragen mehr oder weniger zu speichern und auszuführen. Ich habe von dem Konzept "dickes Modell, dünner Controller" gehört.

Die Art und Weise, wie ich meine Modelle im Moment einrichte, verursacht eine Menge Müll in Controllern für Dinge wie die Validierung von Formularen, die Formatierung von Daten. Gehören die Formularvalidierung, das Hochladen von Dateien und die Datenformatierung in den Controller oder das Modell?

Mir ist klar, dass diese Frage subjektiv ist, was eher zu einer guten Diskussion als zu einer konkreten Antwort führen sollte.

3voto

aaronasterling Punkte 65115

Validierung von Formularen sollte unbedingt Teil des Modells sein. Ich stelle im Allgemeinen jedes Formular als ein Modell dar und übergebe ihm die bereinigten post/get-Parameter. Das Modell kann dann nehmen, was Aktion ist notwendig, basierend auf der Eingabe und verwenden eine Eigenschaft (optional mit einem Getter), um Erfolg oder Misserfolg zu signalisieren. In Pseudocode soll es in etwa so aussehen:

class Controller
{
    function action()
    {
        $input = new Input();
        $form = new FormModel($input);
        if ($errors = $form->errors())
        {
            //load the appropriate view for the errors
        }
        else
        {
            //load the appropriate view for success with an optional redirect
        }
}

3voto

Ricardo Punkte 1

Es gibt zwei Hauptwege, die Sie einschlagen können. Dünner Controller/fettes Modell oder fetter Controller/dünnes Modell. Grundsätzlich ist, wo Sie die meisten der Interaktion setzen. Ich ziehe es vor, den größten Teil des Codes im Modell unterzubringen. Auf diese Weise ist der Code in praktisch jedem Controller und/oder jeder Lib verfügbar. Wenn der Code am Controller verbleibt, ist es schwer (aber nicht unmöglich), ihn in anderen Controllern zu verwenden.

Dinge wie Validierungen und andere allgemeine Aufgaben sollten in einer Lib oder einem Helper enthalten sein. Sie können eine Reihe von "Arbeitern" (das ist der Name, den ich ihnen gebe) erstellen, um die schwere Arbeit zu erledigen. Außerdem hat CI eine Menge fertiger Libs und Helfer, sowohl vom CI-Team als auch von der Community. Schauen Sie sich im Wiki um, um die Fülle der verfügbaren Informationen zu finden.

Ich hoffe, das hilft Vx

0voto

Matthew Punkte 14870

Das Modell ist das, was mit den Daten interagiert (meistens eine Datenbank). Controller verwenden die Modelle für den Zugriff auf die Daten.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X