Die zweite integrierte Funktion der PHP-Template-Engine Smarty

黄舟
Freigeben: 2023-03-03 16:50:01
Original
1378 Leute haben es durchsucht

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#}

In diesem Beispiel verwenden wir getBanner als Namensattribut werden beide Parameter #banner_location_id# und #site_id# übergeben. Als nächstes sucht Smarty nach einer Funktion namens insert_getBanner(). Die Werte von #banner_location_id# und #site_id# werden zusammengefasst Ein Array als Funktion. Um Verwirrung bei der Funktionsbenennung zu vermeiden, muss die Funktion insert_getBanner() auf der Grundlage der übergebenen Parameter ausgeführt werden Die Ergebnisse werden in der Vorlage angezeigt. Der Ort, an dem die Funktion aufgerufen wird. In diesem Beispiel ruft Smarty die Funktion wie insert_getBanner(array("lid"=>"12345","sid"=>67890")) auf und zeigt die an


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-Tag ermöglicht die direkte Einbettung von PHP-Skripten in die Vorlage. Ob diese Anweisungen verarbeitet werden, hängt normalerweise von der Einstellung von $php_handling ab muss natürlich nicht verwendet werden, wenn Sie diese Funktion sehr gut kennen oder glauben, dass Sie sie verwenden müssen, können Sie auch .

php-Tag-Demonstration

{php} // einschließlich eines PHP-Skripts verwenden direkt // aus der Vorlage. include("/path/to /display_weather.php"); {/php}


section,sectionelse

Der Abschnitt der Vorlage wird zum Durchlaufen verwendet Die Daten im Array müssen paarweise angezeigt werden. Der Name kann aus einer beliebigen Kombination aus Buchstaben, Zahlen und Unterstrichen bestehen. Der verschachtelte Name muss jedoch eindeutig sein (normalerweise ein Array) bestimmt die Häufigkeit, mit der die Schleife ausgeführt werden muss. Wenn eine Variable innerhalb der Abschnittsschleife ausgegeben werden muss, muss sie den in eckigen Klammern eingeschlossenen Namen hinzufügen, wenn die Schleifenvariable nicht ausgeführt wird Wert.


Ob der Attributtyp einen Standardwert haben muss. Beschreibung
Namenszeichenfolge Ja n/a Der Name der Schleife

loop [$variable_name] Ja n/a Der Name der Variablen, die Bestimmt die Anzahl der Schleifen.

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 *}

{section name=customer loop=$custid}

id: {$custid[customer]}

{/section}

Ausgabeergebnis:

ID: 1000

ID: 1001

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
   

  

{/strip}

输出结果:

{strip}


 
  
 

       Dies ist ein Test
   

  

{/strip}

输出结果:

Bitte beachten Sie, dass im obigen Beispiel alle Zeilen mit HTML-Tags beginnen und enden. Wenn sich am Anfang und Ende der Zeile Text befindet, wird dies auch möglich Erhalten Sie etwas, das Sie nicht haben Das gewünschte Ergebnis. Das Obige ist der Inhalt der zweiten integrierten Funktion der PHP-Template-Engine smarty. Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website (www.php.org). .php.cn)!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage