Hier werden die Unterschiede zwischen zwei Versionen gezeigt.
| Both sides previous revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
|
php:twig [2015/11/12 14:06] webproducer Methode einer Klasse aufrufen |
php:twig [2021/03/14 12:01] (aktuell) webproducer For-Next-Schleife mit variabler Anzahl von Durchläufen |
||
|---|---|---|---|
| Zeile 1: | Zeile 1: | ||
| ====== TWIG (Template-Engine) ====== | ====== TWIG (Template-Engine) ====== | ||
| - | Die Template-Engine TWIG ermöglicht es einfach und übersichtlich Platzhalter in einer PHP-Datei zu verwenden. | + | TWIG ist eine Template-Engine für PHP mit einer einfach zu erlernenden Syntax. |
| - | Beim Aufruf eines TWIG-Templates werden die Inhalte der Variablen an das Template übergeben. [[http://twig.sensiolabs.org/|Hier ist die offizielle Homepage von TWIG]]. | + | |
| - | ===== Installation ===== | + | Um den Vorteil für den Einsatz von TWIG zu verstehen verfolgen wir am Besten bei der Umsetzung eines Projektes den folgenden Gedanken: |
| + | Es soll die Möglichkeit bestehen, dass Ihr Projekt eines Tages von mehreren Entwicklern, evtl. sogar mit mehreren Teams, weiterentwickelt werden soll. | ||
| + | Dafür ist es sinnvoll, die reine Programmierung (in unserem Falle mit der Programmiersprache PHP) von der optischen Gestalltung (Auszeichnungssprache HTML mit CSS) strikt zu trennen. | ||
| + | So kann später ein Webdesigner selbständig das Layout ändern ohne über Programmierkentnisse zu verfügen. Und andersherum kann ein Programmierer Änderungen an der Logik vornehmen, ohne sich Gedanken über das Layout machen zu müssen. | ||
| + | |||
| + | Da in TWIG-Vorlagen kein PHP verwendet werden kann (das ist schon wegen der abweichenden Dateiendung ".twig" nicht möglich) können hier lediglich mit TWIG-Platzhaltern und -Funktionen verwendet werden. | ||
| + | Die Platzhalter, die Variablen, Arrays und Objekte sein können, werden zuvor mit PHP im Controller vorbereitet und an die TWIG-Vorlage übergeben. So ist die Programmierung sauber vom Layout getrennt. | ||
| + | |||
| + | Die Syntax ist in der offiziellen TWIG-Dokumentation in den folgenden 4 Bereichen aufgeteilt: | ||
| + | |||
| + | * [[twig:tags|Tags]] (z. B. Bedingugen oder Schleifen) | ||
| + | * [[twig:filters|Filters]] (z. B. nur den ersten oder letzten Eintrag anzeigen) | ||
| + | * [[twig:functions|Functions]] (z. B. Zufallswert, kleinster Wert oder größter Wert) | ||
| + | * [[twig:tests|Tests]] (z. B. prüfen, ob Wert leer oder gerade oder ungerade ist) | ||
| + | |||
| + | ---- | ||
| + | |||
| + | * [[http://twig.sensiolabs.org/|Offizielle Homepage von TWIG]] | ||
| + | * [[http://twig.sensiolabs.org/documentation|Offizielle Dokumentation von TWIG]] | ||
| + | |||
| + | ===== Installation in PhpStorm ===== | ||
| + | |||
| + | Menüpunkt "Composer" --> "Add dependency..." --> "twig/twig" --> "install" auswählen | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Installation ohne PhpStorm ===== | ||
| Die Installation von TWIG ist durch den Abhängigkeits-Manager für PHP [[https://getcomposer.org/download/|Composer]] möglich: | Die Installation von TWIG ist durch den Abhängigkeits-Manager für PHP [[https://getcomposer.org/download/|Composer]] möglich: | ||
| <code>composer require twig/twig</code> | <code>composer require twig/twig</code> | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Templates in andere Templates einbinden ===== | ||
| + | |||
| + | Es empfiehlt sich, als erstes einen Basis-Template anzulegen, welches in den anderen Seiten eingebunden wird: | ||
| + | |||
| + | <code>{% extends 'base.twig' %}</code> | ||
| + | |||
| + | Anders herum ist es natürlich auch möglich, Templates in andere Templates zu inkludieren: | ||
| + | |||
| + | <code>{% include 'footer.twig' %}</code> | ||
| + | |||
| + | ---- | ||
| ===== Syntax ===== | ===== Syntax ===== | ||
| - | * **Variablen** werden immer in doppelten geschweiften Klammern geschrieben. **Beispiel:** <code>{{ email }}</code> | + | **Variable definieren** und Wert zuweisen: |
| - | * **Funktionen** werden immer in einfachen geschweiften Klammern, gefolgt von einem Prozentzeichen, geschrieben. **Beispiel:** <code>{% if Statusmeldung %}...{% endif %}</code> | + | |
| + | <code twig>{% set variable = 'wert' %}</code> | ||
| + | |||
| + | * [[twig:vars|variable Variablennamen verwenden]] | ||
| + | |||
| + | Der **Inhalt einer Variable** wird in doppelt geschweiften Klammern ausgegeben: | ||
| + | <code>{{ variable }}</code> | ||
| + | |||
| + | **Tags** werden in TWIG immer in einfachen geschweiften Klammern, gefolgt von einem Prozentzeichen, geschrieben: | ||
| + | <code> | ||
| + | {% tag [ | filter ] %} | ||
| + | {# HTML #} | ||
| + | {% endtag %} | ||
| + | </code> | ||
| + | |||
| + | **Bedingungen** werden immer in einfachen geschweiften Klammern, gefolgt von einem Prozentzeichen, aufgerufen: <code> | ||
| + | {% if var == a %}...{% endif %} | ||
| + | </code> | ||
| + | |||
| + | * [[twig:operators|Liste aller Operatoren]] | ||
| + | |||
| + | **Funktionen** werden immer in einfachen geschweiften Klammern, gefolgt von einem Prozentzeichen, aufgerufen: <code> | ||
| + | {% funktion( parameter ) %} | ||
| + | </code> | ||
| - | ===== kleines Beispiel ===== | + | * [[twig:functions|Die wichtigsten Funktionen]] |
| - | <file html test.twig> | + | ---- |
| - | <h1>Heute ist ein {{ Wochentag }} im {{ Monat }}</h1> | + | |
| - | </file> | + | |
| - | <file php index.php> | + | ===== Twig-Beispiel ===== |
| - | <?PHP | + | |
| - | require "vendor/autoload.php"; | + | Das Twig-Beispiel zeigt die sinnvolle Aufteilung von den folgenden Komponenten einer Webseite auf: |
| - | $loader = new Twig_Loader_Filesystem( "views" ); // Verzeichnis mit den TWIG-Vorlagen | + | |
| - | $twig = new Twig_Environment( $loader ); | + | |
| - | echo $twig->render( "test.twig", [ "Wochentag" => "Dienstag", "Monat" => "November", ] | + | * Konfiguration |
| - | ); | + | * Page-Controller |
| - | </file> | + | * Mastertemplate |
| + | * Twig-View | ||
| + | [[twig:example|Hier geht's zum Beispiel]] | ||
| + | --- | ||
| ===== Kurzreferenz ===== | ===== Kurzreferenz ===== | ||
| Zeile 38: | Zeile 98: | ||
| ^ Kurzbeschreibung ^ Beispiel ^ | ^ Kurzbeschreibung ^ Beispiel ^ | ||
| | Abfragen, ob eine Variable leer ist | <code> {% if Statusmeldung %}...{% endif %} </code>| | | Abfragen, ob eine Variable leer ist | <code> {% if Statusmeldung %}...{% endif %} </code>| | ||
| - | | Bedingungen | <code> {% if value == "regsiter" %}..{% else %}..[% endif %}</code> | | + | | Bedingungen | <code> {% if ergebnis == true %}..{% else %}..[% endif %}</code> | |
| | Inhalt einer Variable ausgeben | <code>{{ Statusmeldung }} </code>| | | Inhalt einer Variable ausgeben | <code>{{ Statusmeldung }} </code>| | ||
| | Durch ein Objekt oder Array iterieren | <code>{% for entry in data %}...{% endfor %}</code> | | | Durch ein Objekt oder Array iterieren | <code>{% for entry in data %}...{% endfor %}</code> | | ||
| | Inhalt eines Array-Elements oder einer Objekt-Variable in einer Schleife ausgeben | <code>{{ entry.email }} </code>| | | Inhalt eines Array-Elements oder einer Objekt-Variable in einer Schleife ausgeben | <code>{{ entry.email }} </code>| | ||
| | For-Next-Schleife erstellen | <code>{% for i in 0..10 %}<p>{{ i }}</p>{% endfor %}</code> | | | For-Next-Schleife erstellen | <code>{% for i in 0..10 %}<p>{{ i }}</p>{% endfor %}</code> | | ||
| + | | For-Next-Schleife mit variabler Anzahl von Durchläufen | <code>{% for f in range( 1, config.faecher ) %} {{ f }} {% endfor %}</code> | | ||
| | Methode einer Klasse aufrufen | <code>{{ user.checkEmail( email ) }}</code> | | | Methode einer Klasse aufrufen | <code>{{ user.checkEmail( email ) }}</code> | | ||