Objekte, Controler und Actions

Hallo,

eine kleine yii Applikation besteht aus einem Modell A und einen Controler A-controler mit der index-aktion sowie anderen actions.

Bisher haben wir alles über diese Kombination Controler/Modell realisiert.

Mit der Zeit ergibt sich nun, dass noch weitere Modelle (B,C) benötigt werden. Teilweise müssen diese Daten auch verarbeitet werden.

Da ich gerade in den Anfängen von yii und objektorientierter Programmierung bin stellt sich mir die Frage: wie nutze ich diese Komponenten "richtig", also im Sinne von yii und objektorientierten Ansätzen.

Dazu habe ich folgende Fragen und würde mich über Antworten freuen:

1.) erstellt/benötigt man grundsätzlich/aus Prinzip zu jedem Model einen Controler?

2.) Wie strukturiere ich die Elemente, wenn die Anwendung Daten der Modelle A,B,C parallel (z.B. in verschiedenen <div>) darstellen soll?

Bisher ist der Weg: Einstieg über A-controler/index, laden der Daten aus Model (A), Model ( B ) und Model ( C ), ggf. bearbeiten der Daten aus den Modellen und dann rendern.

Gefühlt erhält der Controler A allerdings dadurch eine größere Rolle/Gewichtung als ihm zusteht.

Realisiert man dies üblicher Weise so?

Oder gibt es Konstrukte für übergeordnete Controler mit einer Index-action, die nur die Funktionen/Methoden der Controler A-controler, B-controler und C-controler aufrufen? (Widerspricht sich ja auch irgendwie, oder?)

…verwirrend…

Schonmal danke und viele Grüße!

Zur ersten Frage: Grundsätzlich ist es ja so, dass das Model lediglich Daten beinhaltet und unabhängig vom View und vom Controller ist. Sprich das Model kennt weder Controller noch View. Das heisst auch, dass nicht jedes Model einen eigenen Controller benötigt.

In einem Blog hast du beispielsweise ein Model "Beiträge" und ein Model "Kommentare". Da du die Kommentare zu einem Beitrag auf ein und derselben Seite anzeigst (also in demselben View), braucht das Model "Kommentare" keinen eigenen Controller. Wenn der Benutzer nun einen Beitrag aufruft, wird der "Beitrag"-Controller die Daten für den Beitrag aus dem "Beitrag"-Model holen und die dazugehörigen Kommentare aus dem "Kommentare"-Model. Der "Beitrag"-Controller gib dann den Beitrag als auch die Kommentare dem View weiter, welche die Daten anzeigt. Damit ist eigentlich auch schon die zweite Frage beantwortet. Beachten solltest du noch, dass es nicht Aufgabe des Controllers ist, Daten zu manipulieren. Laut MVC sollte das grundsätzlich im Model passieren.

Ich hoffe ich habe mich so einigermassen verständlich ausgedrückt.

Hi dito,

vielen dank für die Antwort.

>Ich hoffe ich habe mich so einigermassen verständlich ausgedrückt.

überaus! :slight_smile:

Mir wird jetzt auch klar, dass ich im Vorfeld viel zu wirr gedacht habe. Deine Zeilen helfen mir da schon weiter.

Nochmals vielen Dank & Gruß.