Zunächst freut mich, dass ich durch meine Frage mal wieder leben ins das Thema gebracht habe
Wie schon beschrieben, besteht die Klasse View nur aus dem Einlesen und Parsen eines zuvor angelgten Templates. Diese Klasse weiß nicht, ob es sich hierbei um ein Template für eine Aktion handelt oder um ein Layout für die Webseite.
Im letzten Beitrag hatte ich geäußert eine Klasse Layout anzulegen die unabhängig vom FrontController aufgerufen werden könnte. Im ActionController würde ich nun sofern diese Klasse existiert eine Instanz zur Verfügung stellen mit der ich in der jeweiligen Aktion im (Index)Controller MetaTags oder TitleTag beeinflussen kann. Bevor der FrontController nun seine Response aufliefert wird das Layout eingebunden und ausgegeben.
Bei einem Ajax-Request, wie er wahrscheinlich oft vorkommen wird, brauche ich das HTML-Layout garnicht laden, somit wäre dieses eigentlich optional
Ein kurzes Beispiel, welches in der Kürze der Zeit leider nicht komplett vollständig ist:
Wieso nicht eine Klasse View und eine Klasse Layout ?
Im letzten Beitrag hatte ich geäußert eine Klasse Layout anzulegen die unabhängig vom FrontController aufgerufen werden könnte. Im ActionController würde ich nun sofern diese Klasse existiert eine Instanz zur Verfügung stellen mit der ich in der jeweiligen Aktion im (Index)Controller MetaTags oder TitleTag beeinflussen kann. Bevor der FrontController nun seine Response aufliefert wird das Layout eingebunden und ausgegeben.
seit wann sind Seitentitel und metatags Bestandteil des Layouts ???
Das sind Bestandteile eines Responseobjekts und auch nur dann wen Du eine html-Seite ausliefern willst, also optional.
Das sind Bestandteile eines Responseobjekts und auch nur dann wen Du eine html-Seite ausliefern willst, also optional.
Ein kurzes Beispiel, welches in der Kürze der Zeit leider nicht komplett vollständig ist:
PHP-Code:
// index.php
$layout = &layout::getInstance();
$layout = addLayoutDirectory('irgendwas');
$front = &FrontController::getInstance();
$front->addModuleDirectory('irgendwas');
$front->run();
// frontcontroller
public function run() {
// 1. Request verarbeiten
// 2. Route setzen
// 3. Controller laden
// 4. beforeRun() aufrufen
// 5. Aktion aufrufen
// 6. afterRun() aufrufen
// 7. Response aufliefern [Hier ist auch das einzigste Echo() vorhanden]
}
// actioncontroller
public function beforeRun() {
// ist die Klasse layout vorhanden?
// Instanz dieser Klasse erstellen
}
public function afterRun() {
// ist die Klasse layout vorhanden?
// Layout an Response weitergeben
}
Kommentar