📋
M307 - Interaktive Webseiten mit Form
  • Interaktive Webseite mit Formular erstellen
  • Tag 1
    • 01-Interaktive Websites
    • 02-Client-Server-Infrastruktur
    • 03 Einrichtung Entwicklungsumgebung
    • 04 PHP
      • 01 Einführung
      • 02 PHP Konfiguration
      • 03 PHP Übersicht
      • 04 Variablen
      • 05 Script Einbindung
      • 06 Arrays
      • 07 Kontrollstrukturen
      • 08 Interne Funktionen
      • 09 Benutzerdefinierte Funktionen
      • 10 Klassen
      • 11 Best Practices
      • 12 Links
    • 05 Strukturierung
      • Aufbau eines MVC (Schritt für Schritt)
    • 06 PHP Aufgaben
      • 01 Bottles of Beer
      • 02 Einfacher Spamfilter
      • 03 Clowns
      • 04 Pixelgenerator
      • 05 Todo-Liste
      • 06 Login-Funktion
      • 07 Navigation
      • 08 Gemeinsames Template
  • Tag 2
    • 01 Formulare Theorie
      • 01 Informationsgruppierung
      • 02 Design- und Strukturgrundlagen
      • 03 Verarbeiten von Formulardaten
      • 04 Validieren von Formulardaten
    • 02 JavaScript Theorie
      • 01 Einfuehrung
      • 02 JavaScript Übersicht
    • 03 Übungsaufgaben zu JavaScript
      • 01 Schere, Stein, Papier
      • 02 Whack-a-Button
    • 04 JavaScript Validierung
      • 01 Validierung
      • 02 Vor- und Nachteile
      • 03 Aufgabe
  • Tag 3
    • 01 Datenbankanbindung
      • 01 Datenbankanbindung
      • 02 Datenbankverbindung
      • 03 Datenbankabfragen
      • 05 Datenlöschung
      • 04 Datenspeicherung
      • 06 Datenmanipulation
      • 07 Refactoring
    • 02 Testing
    • 03 Security Aufgaben
      • 01 Gruppenarbeit
        • 01 Arbeitsauftrag
        • 02 Cross-Site-Scripting (XSS)
        • 03 SQL-Injections
        • 04 Local File Inclusion
      • 02 Eigenes Formular absichern
      • 03 Karl's Website
    • 04 Applikationssicherheit
Powered by GitBook
On this page
  • Aufgabenstellung
  • Lösungsschritte
  • Testing

Was this helpful?

Export as PDF
  1. Tag 1
  2. 06 PHP Aufgaben

08 Gemeinsames Template

Aufgabenstellung

Erstelle eine Template-Klasse und eine View dazu, und verwende das Template dann für alle Übungen.

Lösungsschritte

Schritt 1

Erstelle eine neue View /app/Views/template.view.php mit einem HTML-Gerüst und Ausgabe der Variable $content:

<!DOCTYPE html>
<html lang="de">
<head>
    <meta charset="UTF-8">
    <title>Meine Seite</title>
    <!-- <base ...>: Relative urls start at index.php's directory -->
    <base href="<?= dirname($_SERVER['SCRIPT_NAME']); ?>/" />
    <link rel="stylesheet" href="public/css/app.css">
</head>
<body>
    <?= $content ?>

    <script src="public/js/app.js"></script>
</body>
</html>

Schritt 2

Erstelle eine neue Klasse View in /core/view.php und lade sie in /core/bootstrap.php. Erstelle darin eine Methode View::render($template, $view), welche folgendes tut:

  1. Die Template-View laden und von ihr den Content innerhalb des Templates ausgeben lassen.

Vor beiden Schritten solltest du testen, ob es die angegebene Datei auch gibt (file_exists());

class View
{
  /**
   * Render a view and display the result with the given template
   * 
   * @param $template string - e.g. "app/Views/template.view.php"
   * @param $view string - e.g. "app/Views/spam.view.php"
   */
  public function render(string $template, string $view)
  {
    // Render given `$view` and don't send result to client, but store it into the variable `$content`. 
    // Dein Code hier...

    // Load template view 
    // Dein Code hier...
  }
}

Schritt 3

Deine bestehenden Aufgaben entsprechend anpassen:

  1. In den bisherigen Views kannst du alles rauslöschen, was nun in template.view.php vorhanden ist.

  2. Im Controller wird nun nicht mehr die View direkt eingefügt (require ...), sondern eine neue View erzeugt und die Methode render() aufgerufen:

class XYController
{
  public function xy()
  {
    // Do what ever needs to be done before loading the view..

    // Load view and render with template (replaces require 'app/Views/aufgabe-xy.view.php')
    $view = new View();
    $view->render('app/Views/template.view.php', 'app/Views/aufgabe-xy.view.php');
  }
}

Schritt 4

Füge in template.view.php VOR dem Content die Navigation aus Aufgabe 7 ein (horizontal).

Testing

Klicke alle Aufgaben mal durch und schau, ob alles noch richtig funktioniert.

Previous07 NavigationNextTag 2

Last updated 3 years ago

Was this helpful?

Content der View rendern und nicht direkt ausgeben, sondern in eine Variablen $content zwischenspeichern. Ein Beispiel, wie das geht, findest du z.B. auf

https://stackoverflow.com/questions/8510532/using-include-within-ob-start#answer-8510592