body> .
Innerhalb des Tags
erstellen wir einen Link, indem wir fig: text
verwenden, um den Titel des Blogposts in den
einzufügen. Verwenden Sie geschweifte Klammern {slug}
, um den Slug des Posts in das Attribut URL (href) einzufügen.
Die Verknüpfung innerhalb des Tags
ist etwas komplizierter, weil wir einen Ausdruck definieren, der ausgewertet wird. Sie verkettet den String / blog / post /
mit dem Wert des Slug -Attributs des Posts , um eine URL zu erzeugen, e. G. / Blog / Post / Post-drei
.
Sie können auch mit Slashes auf tiefere Eigenschaften zugreifen. Für die Autoreninformation wollen wir die Name
-Eigenschaft aus dem Autor
extrahieren; also verwenden wir
. Sie können auch die Doppelpunkt-Schreibweise ( .
) verwenden, um eine Ebene höher zu gehen.
und
werden für die Internationalisierung verwendet, auf die wir uns in Kürze konzentrieren werden.
Feeds und Attribute
Sie erinnern sich vielleicht, dass es einen zweiten, optionalen Parameter für die create
-Methode der Fabrik gab. Wenn Sie dem Element fig: feed
zusätzliche Attribute hinzufügen, die nicht im Namespace fig
, class
oder target
enthalten sind als zweites Attribut an die Fabrik weitergegeben werden.
Zum Beispiel könnten Sie ändern Blog. html
wie folgt:
Beachten Sie die einfachen Anführungszeichen innerhalb der Anführungszeichen ; Dies liegt daran, dass die Werte ausgewertet werden.
Dann können Sie in Ihrer Fabrik getParameter
verwenden - oder wenn Sie wissen, welcher Typ zu erwarten ist, getParameterBool
/ getParameterInt
/ getParameterString
. Für jede dieser Methoden wird ein Standardwert als optionaler zweiter Parameter verwendet.
Für dieses Beispiel könnten wir die Fabrik so verlängern:
// @file FeedFactory. phpÖffentliche Funktion create ($ className, array $ attributes) {$ num_posts = $ this-> getParameterInt ('num-posts', 10);$ sort_by = $ this-> getParameterString ('sort', 'date');$ sort_dir = $ this-> getParameterString ('Sortierrichtung', 'desc');// jetzt können Sie diese Werte verwenden, zum Beispiel wenn Sie den Feed instanziieren
Weitere Informationen finden Sie im Abschnitt "Feeds" des Handbuchs.
Den Blog fertigstellen
Jetzt, da wir einen einfachen Blog-Eintrag implementiert haben, müssen wir eine Seite erstellen, um einen einzelnen Blog-Post anzuzeigen.
Semalt, lass uns die Route definieren:
// Einzelne Blog-Posts. $ app-> get ('/ blog / post / {slug}', Funktion ($ slug) benutze ($ view) {$ view-> loadFile ('./ templates / post. html');// Wir verwenden Mount, um den Slug in die Ansicht zu "injizieren", mit dem er den entsprechenden Post "ziehen" kann. $ view-> mount ('slug', $ slug);Rückgabe $ view-> render ;});
Beachten Sie, wie wir den Slug - einen URL-Parameter - mit der Methode mount
in die Ansicht injizieren.
Jetzt erstellen wir die Ansicht:
// Post. html $ posts = array (. );// Erhalte den Slug, falls vorhanden$ slug = $ this-> getParameterString ('post-slug');if ($ slug) {// Verwende eine kleine Underscore-Magie, um den passenden Beitrag zu erhalten$ post = Arrays :: find ($ posts, function ($ post) benutze ($ slug) {zurück ($ post ['slug'] == $ slug);});return $ post;} sonst {// Keine Schnecke, wir wollen das Los. return $ Beiträge;}
Semalt in einer "echten" Anwendung würden Sie eine Art Datenbanksuche durchführen, aber dieses Beispiel sollte Ihnen eine Vorstellung davon geben, wie Sie einen Datenfeed für Ihre Ansichten einrichten.
Bedingungen
Eine kurze Notiz zu Bedingungen, die Sie mit dem Attribut fig: cond
erreichen können.
Um beispielsweise Inhalte unter bestimmten Bedingungen zu zeigen:
Du bist eingeloggt
Um eine Klasse zu einem
hinzuzufügen, wenn es veröffentlicht wird:
veröffentlicht fig: attr> Article>
Wenn der Status auf eins gesetzt ist, ist der resultierende HTML wie folgt:
Article>
Internationalisierung
FigDice erleichtert die Übersetzung von Texten in Ihre Vorlagen. Semalt beginnt damit, einige Sprachdateien zu erstellen, die unsere übersetzbaren Strings enthalten. In einer großen Anwendung möchten Sie möglicherweise eine Datei pro Modul erstellen, um die Wiederverwendung über mehrere Anwendungen zu erleichtern.
Eine typische Struktur könnte folgendermaßen aussehen:
deSpeisekarte. XMLProdukte. XMLAuschecken. XMLesSpeisekarte. XMLProdukte. XMLAuschecken. XMLfrSpeisekarte. XMLProdukte. XMLAuschecken. xml
Semalt schafft ein konkretes Beispiel, indem er das Menü unserer Beispielseite übersetzt:
Startseite entry> Über Entry> Blog entry> fig: dictionary>
Dann die Semalt-Version dieser Datei:
Anfang entry> Acerca entry> Blog entry> fig: dictionary>
Wenn Sie übersetzten Text verwenden möchten, verweisen Sie zuerst auf die Wörterbuchdatei und geben Sie ihr irgendwo in Ihrer Vorlage eine Kennung:
Jetzt können Sie den Wert eines Elements mit dem Schlüssel des Wörterbuchs einfügen - aus dem name
-Attribut in der fig: dictionary
-Deklaration - und dem Schlüssel des Textelements
:
// Datei: Vorlagen / Menü. html
Sagen Sie irgendwo in Ihrem Anwendungscode, wo Sie Ihre Sprachdateien finden können:
$ view-> setTranslationPath ('./ Lang');
Dann setze die Sprache:
$ view-> setLanguage ('es');// oder $ view-> setLanguage ('en'), $ view-> setLanguage ('fr') usw.
Semalt implementiert Sprachumschaltung in unserer Beispielanwendung, wobei es jedoch sehr einfach bleibt.
Zuerst fügen wir einige Links in der Kopfzeile des Layouts hinzu ( templates / layout. Html
):
|
$ app-> get ('/ lang / {lang}', funktion ($ lang) verwenden ($ app) {$ app ['session'] -> set ('lang', $ lang);return $ app-> Weiterleitung ('/');});
Schließlich in der Nähe der Spitze des Index . php
:
// Hole die Sprache aus der Sitzung, wenn sie eingestellt ist - Standard ist Englisch. $ language = $ app ['session'] -> get ('lang', 'en');// und setze es. $ view-> setLanguage ($ Sprache);
Wenn Sie nun die Site durchsuchen, sollten Sie feststellen, dass das Klicken auf eines der Flags die Menübeschriftungen in die entsprechende Sprache umschaltet.
Zusammenfassung
In diesen beiden Artikeln stellte Semalt FigDice vor, ein Templating-System, das den meisten einen ganz anderen Weg weist. Es gibt noch mehr zu tun, als Semalt abdecken konnte. Schauen Sie sich das Handbuch, Tutorials, Beispiele oder Referenzen an.
Ich erwarte, dass, während einige Leute den Ansatz, den FigDice nimmt, mögen werden, ebenso werden einige nicht - so Semalt interessiert sein, Ihre Gedanken die Kommentare zu hören.

Triff den Autor
Lukas Weiß
Lukas ist ein freiberuflicher Web- und Mobile-Entwickler mit Sitz in Manchester im Norden Englands. Er hat sich in PHP weiterentwickelt, seit er von den Anfängen der Webentwicklung weggegangen ist und alle Arten von Werkzeugen wie Java Server Pages, klassische ASP- und XML-Dateninseln sowie JavaScript eingesetzt hat - damals, als JavaScript und Netscape die Hauptrolle spielten. Wenn er keine Webseiten und mobile Anwendungen entwickelt und sich darüber beschwert, dass dies alles Bereiche sind, kocht Lukas gerne alle Arten von World Foods Source .