Lupe Suche
Responsiv Devices

4 - Page Controller erweitern

Nach diesem Ausflug in die Theorie, gillt es den Page-Controller zu erweitern, er soll die Angaben für Header und Footer in alle Seiten zur Anzeige bringen.

Die beiden Funktionen (Methoden) FooterContent() und HeaderContent() sammeln die Daten und werden im Template mit $FooterContent und $HeaderContent zur Anzeige gebracht.

class Page_Controller extends ContentController {

    public function FooterContent() {
        ...
    }
    public function HeaderContent() {
        ...
    }

}

Mit der Methode FooterPage::get() und HeaderPage::get() bringen den abgelegten Datensatz in den Page-Controller. Der Zusatz ->First() stellt sicher, das der datensatz nur einmal geladen wird.

    public function FooterContent() {
        return FooterPage::get()->First();
    }
    public function HeaderContent() {
        return HeaderPage::get()->First();
    }

Führe folgende Schritte aus:

1. Öffne mysite/code/Page.php im Editor
2. Füge die beiden zusätzlichen Funktionen in den Page_Controller ein:
    class Page_Controller extends ContentController { ... }
3. Sarte das CMS im Browser mit dev/build

Optional: init()-Funktion im Controller nutzen

Im Standardmässig installiereten Page.php-Controller ist die Startfunktion als leerer Rumpf bereits eingetragen. das ist praktisch, um damit bspw. ein Debugging durchführen zu können. Die init()-Funktion wird beim Start derSeite ausgeführt.

public function init() {
        parent::init();
    }

Um die Datensätze der Klasse FooterPage anzuzeigen kann folgende Start-Funktion geschrieben werden:

public function init() {
        parent::init();
        
        $results = FooterPage::get();
        
        foreach($results AS $result) {
        print_r($result->Title."<br /> - ".
                $result->SocialFacebook."<br /> - ".
                $result->SocialTwitter."<br /> - ".
                $result->SocialRssFeed."<br /> - end!"
                );
        }
    }

debugging

Die Anzeige von print_r() erfolgt oben im Body-Element. So kann auf einfache Weise festgestellt werden, welche Datensätze beim Aufruf der Mysql-Query ausgegeben werden. Das lässt sich wieder auskommentieren und wir können in aller Ruhe unser Template in Arbeit nehmen.

Die fertige Page-Klasse zur Kontrolle. (Das Debugging wurde auskommentiert)
Datei: Page.php

<?php
class Page extends SiteTree {

    private static $db = array(
    );

    private static $has_one = array(
    );

}
class Page_Controller extends ContentController {

    public function FooterContent() {
        return FooterPage::get()->First();
    }
    public function HeaderContent() {
        return HeaderPage::get()->First();
    }

    public function init() {
        parent::init();
        /*
        $results = FooterPage::get();
        foreach($results AS $result) {
        print_r($result->Title."<br /> - ".
                $result->SocialFacebook."<br /> - ".
                $result->SocialTwitter."<br /> - ".
                $result->SocialRssFeed."<br /> - end!"
                );
        }
        */
    }

}

Weiter mit der Anzeige für den Header