PostController

Der PostController wickelt den Arbeitsprozess des CMS für einen konkreten Beitrag ab.

Affiliate

PHP 8 und MySQL (Demo) - Dynamische Webseiten mit PHP und MySQL programmieren: Alles, was Sie dafür wissen müssen, steht in diesem Buch. Profitieren Sie von einer praxisorientierten Einführung und lernen Sie alle neuen Sprachfeatures von PHP 8 kennen. Die Autoren Christian Wenz und Tobias Hauser sind erfahrene PHP-Programmierer und Datenbankspezialisten.

Wichtiger Hinweis: Je nach verwendetem Werbenetzwerk, musst du hier einen geeigneten Hinweis anbringen, der dem Leser anzeigt, das du mit Affiliate-Marketing Geld verdienst (ggf. in den Teilnahmenbedingungen des betreffenden Werbepartners nachlesen).

Der PostController

Der PostController regelt die Verarbeitung des CMS wenn der Leser einen konkreten Beitrag aus dem Content Management Systems anfordert. Er greift auf den konkreten Beitrag zu und bereitet die Anzeige im Browser auf.

class PostController 
{ 
    function __construct($category, $post) 
    {
        global $dpr, $pd, $pde;
        $post_file_path = CONTENT_DIR.$category.'/'.$post.CONTENT_EXT;

        if(file_exists($post_file_path))                            
        {
            $post_file_content = file_get_contents($post_file_path);
        } 
        else 
        {
            Flight::hook('onError','');
            Flight::halt(404, ERROR_404_DOC);
        }

        foreach (Dipper::parse(Page::meta($post_file_content)) as $key=>$value)
        {
            $template_token_name    = strtolower($key);                         
            $template_token_content = $value;                                   
            Flight::view()->set($template_token_name, $template_token_content);
        }

        $post_content_section = $pde->text(Page::content($post_file_content));
        $post_content_section = Flight::hook('afterParseContent', $post_content_section);

        Flight::view()->set('content', $post_content_section);
        Flight::render('post');
    }
}

Version 2.4.01

Die Verarbeitung durch den PostController.php startet damit, das er die benötigten externen Bibliotheken Parsedown(), ParsedownExtra() und Dipper() in den Speicher läd und die Objekte als Variablen $pd, $pde und $dpr für den weiteren Zugriff zur Verfügung stellt.

Das FlightCMS muss als nächstes prüfen, ob es sich bei dem Request um eine existierende Datei handelt und prüft die Existenz mit file_exists(). Existiert diese Datei nicht, dann übergibt der Controller die Steuerung an das Flight Microframework und es gibt eine Fehlerseite (404) aus und stoppt die weitere Verarbeitung. Ansonsten wird das angeforderte Flatfile mit file_get_contents() geladen.

Mit Hilde des YAML-Parsers Dipper, wird die interne Struktur des angeforderten Beitrags in Key-Value Paare zerlegt und mit Flight::view() in die View kopiert. Es entsteht dort beispielsweise der Token Title mit dem Inhalt Das ist die Beitragsüberschrift.

Im nächsten Schritt wird der eigentliche Content des Beitrags mit explode() herausgelöst und die die Templatevariable content kopiert, zuvor übersetzt der Markdown-Praser den Text in valides HTML-Format.

Mit Flight::render() weist FlightCMS das Framework an, die View post.php zu laden und den Inhalt des Templates dort

________
FlightCMS - Das Teilen unserer Webseiten, Beiträge und Grafiken ist ausdrücklich gewollt und erwünscht. Durch das gegenseitige Verlinken, teilen wir Link-Juice und können etwas positive Reputation an dich weitergeben. Mach doch einfach mit, denn WISSEN muss allen Menschen auf diesem Planeten kostenlos zur Verfügung stehen - das Internet ist frei und gehört uns!


FlightCMS   2022-07-11   MVC Pattern Controller Home Startseite Landingpage

Beiträge

Dokumentation

Download und Installation von FlightCMS. Erster Beitrag und Kategorie. Tipps und Tricks für eigene Anpassungen

Plugins

Schreiben Sie eigene Plugins und erweitern damit die Basisfunktionen des CMS um neue individuelle Eigenschaften.

Templates

Die Entwicklung neuer Templates ist sehr einfach und Sie haben nach wenigen Minuten einen ersten Prototyp Ihrer Webseite.