Heim > Artikel > Backend-Entwicklung > Die zweite integrierte Funktion der PHP-Template-Engine Smarty
Smarty verfügt über einige integrierte Funktionen.
Eingebaute Funktionen sind Teil der Vorlagensprache.
Benutzer können keine benutzerdefinierten Funktionen mit demselben Namen wie integrierte Funktionen erstellen. in Funktionen.
(#capture-Funktion, config_load, foreach, foreachelse, include, include_php und andere integrierte Funktionen, siehe eine der integrierten Funktionen im Smarty-Tutorialthema der PHP-Template-Engine)
einfügen
if, elseif, else
ldelim, rdelim
literal
php
section,sectionelse
strip
insert
Ob der Attributtyp einen Standard haben muss Wertbeschreibung
Namenszeichenfolge Ja n/a Der Name der Einfügefunktion
Zuweisungszeichenfolge Nein n/a Dieses Attribut gibt eine Variable an, um die Ausgabe der einzufügenden Funktion zu speichern
Skriptzeichenfolge Nein n/a Der Name des PHP-Skripts, das vor dem Einfügen der Funktion eingefügt werden muss
[var ...] [ var type] Nein n/a Lokale Parameter, die an die einzufügende Funktion übergeben werden
Die Insert-Funktion ähnelt der Inluce-Funktion. Der Unterschied besteht darin, dass der in Insert enthaltene Inhalt nicht zwischengespeichert und bei jedem Aufruf der Vorlage erneut ausgeführt wird.
Zum Beispiel, wenn Sie Verwenden Sie eine Vorlage mit einer Werbebannerposition oben auf der Seite. Das Werbebanner kann beliebige gemischte Informationen wie HTML, Bilder, FLASH usw. enthalten. Daher kann hier kein statischer Link verwendet werden, und wir tun dies auch nicht Sie möchten, dass das Werbebanner zwischengespeichert wird. Dazu müssen Sie die Werte #banner_location_id# und #site_id# (aus der Konfigurationsdatei) angeben und eine Funktion zum Abrufen der Inhaltsinformationen des Werbebanners benötigen 🎜>
Funktionsdemonstration einfügen
{* Beispiel für das Abrufen eines Banners *} {insert name="getBanner" lid=#banner_location_id# sid=#site_id#}
Wenn das Zuweisungsattribut festgelegt ist, wird der diesem Attribut entsprechende Variablenname verwendet, um die Ausgabe der einzubindenden Funktion zu speichern Hinweis: Die der Vorlagenvariablen zugewiesenen Ausgabeinformationen sind auch beim Caching ungültig.
Wenn das Skript-Attribut angegeben ist, wird es (nur einmal) eingebunden ) bevor Sie die Funktion aufrufen und ausführen. Dies soll verhindern, dass die aufgerufene Funktion nicht existiert. Durch den ersten Aufruf des PHP-Skripts wird diese Situation vermieden.
Das Smart-Objekt wird als zweiter Parameter übergeben Funktion, und auf die Smarty-Objektinformationen kann über $this in der einzubindenden Funktion zugegriffen und diese geändert werden.
Technische Punkte: Machen Sie einen Teil der Vorlage nicht zwischengespeichert. Wenn der Cache aktiviert ist, wird die Einfügefunktion nicht zwischengespeichert . Sie werden bei jedem Aufruf der Seite dynamisch geladen, auch in der zwischengespeicherten Seite. Diese Funktion kann häufig in Werbebannern, Abstimmungen, Echtzeit-Wettervorhersagen, Feedback-Informationen und anderen Bereichen verwendet werden 🎜>if,elseif,else
Die if-Anweisung in Smarty ist genauso flexibel und einfach zu verwenden wie die if-Anweisung in PHP und verfügt über mehrere Funktionen, die für Template-Engines geeignet sind, wenn if in Paaren mit /if angezeigt werden muss . Else- und elseif-Klauseln können verwendet werden: eq, ne, neq, gt, lt, lte, le, gte, ge, ist gerade, ist ungerade, ist nicht gerade, ist nicht ungerade, nicht , mod, div by, even by, odd by, ==, !=, >, <, <=, >= Verwenden Sie diese Modifikationen. Wörter müssen durch Leerzeichen von Variablen oder Konstanten getrennt werden Demonstration {if $name eq "Fred"} Willkommen, Sir.{elseif $name eq "Wilma"} Willkommen, gnädige Frau.{else} Willkommen, was auch immer Sie sind.{/if}{* ein Beispiel mit „oder“-Logik * }{if $name eq „Fred“ oder $name eq „Wilma“} ...{/if}{* dasselbe wie oben *}{if $ name == „Fred“ || $name == „Wilma“} ...{/if}{* die folgende Syntax funktioniert NICHT, bedingte Qualifizierer müssen von umgebenden Elementen durch Leerzeichen getrennt werden *}{if $name== "Fred" || ... {/if}{* Klammern sind erlaubt *}{if ( $amount < 0 or $amount > 1000 ) and $volume >= #minVolAmt #} ...{/if}{* Sie können auch PHP einbetten Funktionsaufrufe *}{if count($var) gt 0} ...{/if}{* testen, ob Werte gerade oder ungerade sind *}{if $var ist gerade} ...{/if}{if $var ist ungerade} ...{/if}{if $var ist nicht ungerade} ...{/if}{* teste, ob var durch 4 teilbar ist *}{if $var ist div durch 4} ... {/if}{* testet, ob var gerade ist, gruppiert nach zwei, d. h. 0=gerade, 1=gerade, 2=ungerade, 3=ungerade, 4=gerade, 5=gerade usw. *}{if $var ist gerade um 2} ...{/if}{* 0=gerade, 1=gerade, 2=gerade, 3=ungerade, 4=ungerade, 5=ungerade usw. *}{wenn $var um 3 gerade ist } ...{/if}
ldelim,rdelim
ldelim und rdelim werden zur Ausgabe von Trennzeichen verwendet, bei denen es sich um geschweifte Klammern „{“ und „}“ handelt. Die Vorlagen-Engine versucht immer, den Inhalt innerhalb der geschweiften Klammern zu interpretieren. Wenn Sie also geschweifte Klammern ausgeben müssen, Bitte verwenden Sie diese Methode.
Verwenden Sie ldelim, rdelim, um zu demonstrieren, {* dadurch werden Literaltrennzeichen aus der Vorlage gedruckt *}{ldelim}funcname{rdelim} ist, wie Funktionen in Smarty aussehen! Ausgabeergebnis: {funcname} ist, wie Funktionen funktionieren Schauen Sie in Smarty nach!
literal
Literal Die Daten im Beschriftungsbereich werden als Text behandelt und die Vorlage ignoriert alle darin enthaltenen Zeicheninformationen. Diese Funktion wird verwendet, um die Möglichkeit von anzuzeigen JavaScript-Skripte mit geschweiften Klammern, z. B. Zeicheninformationen, werden von der Vorlagen-Engine nicht analysiert und nicht direkt angezeigt.
{ /literal}
php
{php} // einschließlich eines PHP-Skripts verwenden direkt // aus der Vorlage. include("/path/to /display_weather.php"); {/php}
section,sectionelse
Ob der Attributtyp einen Standardwert haben muss. Beschreibung
Namenszeichenfolge Ja n/a Der Name der Schleife
Start-Ganzzahl Nein 0 Die Anfangsposition der Schleifenausführung. Wenn der Wert eine negative Zahl ist, wird die Startposition vom Ende des Arrays aus berechnet in und geben Sie start als -2 an, dann ist der Index, der auf das aktuelle Array zeigt, 5. Unzulässige Werte (die die untere Grenze des Schleifenarrays überschreiten) werden automatisch auf den nächsten zulässigen Wert
Schrittzahl Nr. 1 angepasst Der Wert bestimmt die Schrittweite der Schleife. Wenn Sie beispielsweise „step=2“ angeben, werden nur Elemente mit den Indizes 0, 2, 4 usw. durchlaufen. Wenn „step“ ein negativer Wert ist, wird das Array von hinten nach vorne durchlaufen >max integer Nein 1 Legt die maximale Anzahl der Ausführungen der Schleife fest.
show boolean Nein true Legt fest, ob die Schleife angezeigt werden soll.
Abschnitt Funktionsdemonstration
{* Dieses Beispiel wird gedruckt alle Werte des $custid-Arrays ausgeben *}
id: {$custid[customer]}
{/section}
Ausgabeergebnis:
ID: 1000
ID: 1002
Schleifendemonstration
Ausgabe Ergebnis:
{* Die Schleifenvariable bestimmt nur die Anzahl der Schleifen, auf die Sie in der Vorlage innerhalb des Abschnitts zugreifen können. In diesem Beispiel wird davon ausgegangen, dass $custid, $name und $address alle Arrays sind, die dieselbe Nummer enthalten von Werten *}{Abschnittsname=Kundenschleife =$custid} ID: {$custid[Kunde]}
Name: {$name[Kunde]}
}
{/section }Ausgabeergebnis: ID: 1000
Name: John Smith
Adresse: 253 N 45th
id: 1001
Name: Jack Jones
Adresse: 417 Mulberry ln
ID: 1002
Name: Jane Munson
Adresse: 5605 Apple St
Abschnitt 名称演示 {* Der Name des Abschnitts kann beliebig sein
und wird verwendet, um auf die Daten innerhalb des Abschnitts zu verweisen *}
{Abschnittsname=mydata loop=$custid}
id: {$custid[mydata]}
Name: {$name[mydata]}
Adresse: {$address[mydata]}
< ;p>
{/section}
嵌套 section 演示 {* Abschnitte können so tief verschachtelt werden, wie Sie möchten. Mit verschachtelten Abschnitten können Sie auf komplexe Datenstrukturen zugreifen, beispielsweise auf mehrdimensionale Arrays. In diesem Beispiel ist $contact_type[customer] ein Array von Kontakttypen für den aktuellen Kunden. *}{Abschnittsname=Kunde Schleife=$custid} ID: {$custid[Kunde]}
Name: {$name[Kunde]}
Adresse: {$address[customer]}
{section name=contact loop=$contact_type[customer]} {$contact_type[customer][contact]}: {$contact_info[customer][contact]}
{/section}
{/section}输出结果:ID: 1000
Name: John Smith
Adresse: 253 N 45th
Telefon privat: 555-555-5555
Mobiltelefon: 555-555-5555
E-Mail: john@mydomain.com
id: 1001
Name: Jack Jones
Adresse: 417 Mulberry ln
Telefon privat: 555- 555-5555
Handy: 555-555-5555
E-Mail: jack@mydomain.com
id: 1002
Name: Jane Munson
Adresse: 5605 Apple st
Telefon zu Hause: 555-555-5555
Mobiltelefon: 555-555-5555
E-Mail: jane@mydomain.com
section 遍历多维数组演示 {* Dies ist ein Beispiel für das Drucken eines assoziativen Arrays
von Daten innerhalb eines Abschnitts *}
{section name=customer loop=$contacts}
name: {$contacts [customer].name}
home: {$contacts[customer].home}
cell: {$contacts[customer].cell}
e -mail: {$contacts[customer].email}
{/section}
输出结果:
Name: John Smith
Privat: 555-555-5555
Mobil: 555-555-5555
E-Mail: john@mydomain.com
Name: Jack Jones
Telefon zu Hause: 555-555-5555
Handy: 555-555-5555
E-Mail: jack@mydomain.com
Name: Jane Munson< br>
Telefon zu Hause: 555-555-5555
Handy: 555-555-5555
E-Mail: jane@mydomain.com
sectionelse 演示 {* sectionelse wird ausgeführt, wenn keine $custid-Werte vorhanden sind *}
{section name=customer loop=$custid}
id: {$custid[customer]}
{sectionelse}
es gibt keine Werte in $custid.
{/section}
Abschnitt 循环也有可供调用的变量名. 通过如下方式调用{$smarty.section.sectionname.varname}.
strip
Web 开发者多次遇到空格和回车影响HTML输出的情形(浏览器的"特性"),为了得到特定的结果,因此你不得不在模板里运行所有的标签.
Smarty 在显示前将除区任何位于 {strip}{/strip}标记中数据的首尾空格和回车. 这样可以保证模板容易理解且不用担心多余的空格导致问题.
strip 标签演示 {* Folgendes wird bei der Ausgabe alle in einer Zeile ausgeführt *}
{ strip🎜>
Dies ist ein Test |
输出结果: