MVC – Einführung durch ein eigenes kleines „Framework“

Datenübergabe vom Controller zur View

Zum jetzigen Zeitpunkt ist unser Controller leider recht sinnlos. Text ausgeben soll er ja nicht und die View macht was sie will. Wir benötigen also eine Möglichkeit vom Controller aus Daten zur View zu bringen.

Wir erweitern dazu die View-Klasse um einen Container für Variablen und einen Setter.

Über einen Setter im Controller machen wir die View zugänglich. Damit kann der Controller nun beliebige Daten weitergeben – was wir in der indexAction auch gleich nutzen werden.

Im Prinzip war’s das schon. Im Layout kann jetzt mit

auf die Variablen zugegriffen werden.
Das ist allerdings eine Menge Schreibarbeit, die wir etwas verkürzen können. PHP erlaubt variable Variablennamen, was wir hier ausnahmsweise mal in der render() nutzen:

Jetzt kann in der View die Variable direkt verwendet werden.

Die Variablen werden im Kontext der render() Methode definiert. Da der include Befehl ebenfalls in diesem Kontext erfolgt, sind die Variablen innerhalb der View verfügbar.

Der vollständige Code bis hierher (v0.3)

Was wäre nun die Möglichkeit dynamischer Inhalte ohne ein geeignetes Speichermedium. Genau darum geht es beim ModelWeiter mit Model

4 Gedanken zu „MVC – Einführung durch ein eigenes kleines „Framework““

  1. Tolles Tutorial !!

    Eine Frage habe ich jedoch dazu:
    $stmt->execute($options[‚bind‘]);
    welche Parameter stehen in $options ?

    LG

    1. Der $options Parameter bei den find Funktionen, soll möglichst flexibel einsetzbar sein.

      Bisher versteht die findFirst() zum einen direkt eine ID ModelBase(23) und zum anderen die Definition von Parametern. Dann muss ein Array übergeben werden, dass sowohl die WHERE Bedingung und Platzhalterdefinition als auch die Werte für die Platzhalter enthält. Das sieht dann so aus:
      [
      'criteria' => 'userId = :uid',
      'bind' => [':uid'=>5],
      ]

      Hier gilt die Syntax von PDO.

      Die find() Funktion versteht nur die zweite Variante, da ja explizit mehrere Ergebnisse gefunden werden sollen und die ID immer nur eines liefern würde.

  2. Hallo,

    geniales Tutorial (vielen Dank!), welches ich gerne dazu nutzen möchte, meine Kenntnisse in OOP zu vertiefen!

    Eine Frage:
    Unterstützt dieser MVC-Ansatz auch das Konzept Post-Redirect-Get? Ich möchte, dass der Benutzer die Vor-/Zurück-Buttons im Browser nutzen kann, OHNE dass er ein Post-Formular extra noch einmal re-loaden muss.

    Danke und viele Grüße

    Jörg

    1. Hallo Jörg,

      das funktioniert ohne Probleme.
      Was du nach einen POST-Request an den User zurück gibst (Webseite, Redirect, …) hat mit MVC an sich nichts zu tun.
      Und jede Action hört erst mal auf alle Anfragen egal welcher Typ (GET, POST, PUT, …). Weitere Einschränkungen wären in diesem einfachen Beispiel die Aufgabe des Entwicklers. Praktisch alle Frameworks bieten hier Unterstützung an.

      Hoffe das hilft!

Kommentare sind geschlossen.