Heim  >  Artikel  >  Backend-Entwicklung  >  Eine der integrierten Funktionen der PHP-Template-Engine Smarty

Eine der integrierten Funktionen der PHP-Template-Engine Smarty

黄舟
黄舟Original
2016-12-20 10:55:411323Durchsuche

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.
(Informationen zu integrierten Funktionen wie insert, if, elseif, else, ldelim, rdelim, literal, php, section, sectionelse, strip usw. finden Sie in der zweiten integrierten Funktion von php template engine smarty)
#capture function
config_load
foreach,foreachelse
include
include_php

capture
Attributname Typ Erforderlich Standardbeschreibung
Namenszeichenfolge kein Standardwert Der Name des erfassten Blocks
Zeichenfolge zuweisen Nein n/a Der Variablenname, dem die erfasste Ausgabe zugewiesen werden soll

Ob der Attributtyp Standardwertbeschreibung sein muss
Namenszeichenfolge kein Standardwert Daten Name des Erfassungsbereichs
Zeichenfolge zuweisen Nein n/a Wo der Datenerfassungsbereich zugewiesen ist Variablenname[zu testen]

Die Funktion der Erfassungsfunktion besteht darin, die von der Vorlage ausgegebenen Daten zu erfassen und zu speichern es in einer Variablen, anstatt sie auf der Seite auszugeben.
Alles in {capture name="foo" Die Daten zwischen } und {/capture} werden in der Variablen $foo gespeichert, die durch das Namensattribut angegeben wird.
Greifen Sie über $smarty.capture.foo in der Vorlage auf diese Variable zu.
Wenn kein Name angegeben ist, verwendet die Funktion standardmäßig „default“ als Parameter.
{capture} muss paarweise erscheinen , das heißt, enden Sie mit {/capture}, und die Funktion kann nicht verschachtelt werden:
{* Geben Sie beispielsweise nach der Erfassung des Inhalts eine Tabellenzeile aus, die Daten enthält , es wird nichts ausgegeben*}
{capture name=banner}
{include file="get_banner.tpl"}
{ /capture}
{if $smarty.capture.banner ne "" }


{$smarty.capture.banner}

{/if}

config_load
Variablen aus der Konfigurationsdatei laden
Ob der Attributtyp eine Standardwertbeschreibung haben muss
Dateizeichenfolge Ja n/a Der Name der einzubindenden Konfigurationsdatei
Abschnittszeichenfolge Nein n/a Der Name des Abschnitts, der in die Konfigurationsdatei geladen werden soll.
Bereichszeichenfolge Nein lokal Der Bereich der geladenen Daten. Der Wert muss lokal, übergeordnet oder global sein Diese Variable ist die aktuelle Vorlage und gibt an, dass der Gültigkeitsbereich dieser Variablen die aktuelle Vorlage und die übergeordnete Vorlage der aktuellen Vorlage ist (die Vorlage, die die aktuelle Vorlage aufruft, gibt an, dass der Gültigkeitsbereich dieser Variablen alle Vorlagen ist). 🎜 >global boolean Nein Nein gibt an, ob die geladene Variable global sichtbar ist, äquivalent zu „scope=parent“. Hinweis: Wenn das Bereichsattribut angegeben ist, kann dieses Attribut festgelegt werden, aber die Vorlage ignoriert den Attributwert und verwendet das Bereichsattribut als Kriterium.

Beispiel:

{config_load file="colors.conf"}

{#pageTitle#}







FirstLastAddress




Die Konfigurationsdatei kann mehrere Abschnitte enthalten Abschnitt, um den Startpunkt anzugeben, in dem die Variablen abgerufen werden.

Hinweis: Der Abschnitt in der Konfigurationsdatei und der in der Vorlage integrierte Funktionsabschnitt haben nur den gleichen Namen und haben nichts miteinander zu tun.

Beispiel:
{config_load file="colors.conf" section="Customer"}

{#pageTitle#}






FirstLastAddress




foreach,foreachelse

foreach ist neben dem Abschnitt eine weitere Lösung für die Verarbeitung von Schleifen (wählen Sie je nach Bedarf unterschiedliche Lösungen).
foreach wird zur Verarbeitung einfacher Arrays verwendet (die Elementtypen im Array sind gleich) und sein Format ist besser als Abschnitt Viel einfacher, aber der Nachteil besteht darin, dass er nur einfache Arrays verarbeiten kann.
foreach muss paarweise mit /foreach verwendet werden und die Attribute „from“ und „item“ müssen beliebig angegeben werden (eine Kombination aus Buchstaben, Zahlen und Unterstrichen).
Foreach kann verschachtelt werden, aber der Name des foreach im Nest muss eindeutig sein.
Das from-Attribut (normalerweise ein Array) bestimmt die Anzahl der Schleifen.
Die foreachelse-Anweisung wird ausgeführt, wenn die from-Variable keinen Wert hat.
Ob der Attributtyp einen Standardwert haben muss. Beschreibung
from string Ja n/a Der Name des Arrays, das in einer Schleife ausgeführt werden soll
item string Ja n/a Der Variablenname des aktuell verarbeiteten Elements
key string Nein n/a Das aktuell verarbeitete Element Der Schlüsselname von

name string Nein n/a Der Name der Schleife, früher Greifen Sie auf die Schleife zu

Beispiel 1:

{* Dieses Beispiel gibt alle Elemente im Array $custid aus. Der Wert von br>
id: 1001

id: 1002Beispiel 2:
$smarty->assign("contacts", array(array("phone" => "1", "fax" => "2", "cell" => ; "3"),
array("phone" => "555-4444", "fax" => "555 -3333", "cell" => "760-1234")));
*}
{* Der Schlüssel ist der Index des Arrays. Weitere Informationen finden Sie in der Erklärung des Arrays.*}
{foreach name =outer item=contact from=$contacts}
{foreach key=key item=item from=$contact}
{$key}: {$item}

{/foreach}
{/foreach}
Ausgabeergebnis:
Telefon: 1

Fax: 2

Mobiltelefon: 3

Telefon: 555-4444

Fax: 555-3333

Mobiltelefon : 760-1234


Die foreach-Schleife hat einen eigenen Variablennamen, der für den Zugriff auf die Schleife verwendet werden kann. Die Verwendungsmethode ist {$ smarty.foreach.foreachname.varname}, wobei foreachname der ist Das in foreach angegebene Namensattribut wird verwendet, um andere Vorlagen in die aktuelle Vorlage einzubinden. Das Dateiattribut muss angegeben werden Speicherort der Vorlagenressource.
Wenn das Zuweisungsattribut festgelegt ist, wird der diesem Attribut entsprechende Variablenname zum Speichern der Ausgabe der einzubindenden Vorlage verwendet, sodass die Ausgabe der einzubindenden Vorlage nicht angezeigt wird direkt. .
Ob der Attributtyp verwendet werden muss. Standardwertbeschreibung
Dateizeichenfolge Ja n/a Der Name der einzubindenden Vorlagendatei
Zuweisungszeichenfolge Nein n/a Dieses Attribut gibt eine Variable an, deren Ausgabe gespeichert werden soll die einzubindende Vorlage

[ var ...] [var type] Nein n/a Lokale Parameter, die an die einzubindende Vorlage übergeben werden, sind nur in der einzubindenden Vorlage gültig


Beispiel 1 Include-Funktion Demonstration
{include file="header. tpl"}
{* Hauptteil der Vorlage geht hierher *}
{include file="footer.tpl"}

Beispiel 2 enthält eine Funktionsdemonstration mit übergebenen Parametern
{include file= "header.tpl" title="Main Menu" table_bgcolor="#c0c0c0"}

{* Hauptteil der Vorlage kommt hierher *}

{include file="footer. tpl" logo="http://www .php118.com/php118.gif"}

Beispiel 3 Demonstration der Include-Funktion mithilfe externer Vorlagenressourcen
{* absoluter Dateipfad *}

{include file="/usr/local/include/ templates/header.tpl"}

{* absoluter Dateipfad (das Gleiche) *}
{include file="file:/usr/local/include/templates/header .tpl"}
{* absoluter Windows-Dateipfad (MUSS das Präfix „file:" verwenden) *}
{include file="file:C:/www/pub/templates/header.tpl"}

{* aus Vorlagenressource mit dem Namen „db“ einschließen *}

{include file="db:header.tpl"}

include_php
Die Funktion „inluce_php“ wird zum Einbinden von PHP-Skripten in Vorlagen verwendet. Wenn der abgesicherte Modus festgelegt ist, muss sich das eingebundene Skript im Pfad „$trusted_dir“ befinden. Die Funktion „include_php“ muss das Dateiattribut festlegen, das den Speicherort angibt Die enthaltene PHP-Datei kann ein relativer Pfad zu $trusted_dir oder ein absoluter Pfad sein, um das Problem der Vorlagenkomponentisierung zu lösen. Zum Beispiel: Angenommen Es gibt eine Datenbank. Um Daten dynamisch aus einer Vorlage abzurufen, die zur Anzeige der Site-Navigation verwendet wird, können Sie den PHP-Logikteil vom Dateninhalt trennen und ihn in einem separaten Ordner speichern und das PHP-Skript dann am Anfang der Vorlage einfügen Kann überall verwendet werden. Fügen Sie diese Vorlage ein, ohne sich Gedanken darüber machen zu müssen, ob die Datenbankinformationen zuvor vom Programm abgerufen wurden.
Auch wenn die PHP-Dateien mehrmals in der Vorlage aufgerufen werden, werden sie standardmäßig nur einmal eingebunden Once-Attribut, um anzugeben, dass die Datei bei jedem Aufruf erneut eingebunden wird. Wenn das Once-Attribut auf false gesetzt ist, wird die Datei bei jedem Aufruf erneut eingebunden.
Wenn das Assign-Attribut festgelegt ist, entspricht der Variablenname Das Attribut wird verwendet, um die einzubindende PHP-Ausgabe zu speichern, sodass spätere Ausgaben mit PHP-Dateien nicht direkt angezeigt werden.
Auf das Smarty-Objekt kann über $this in der einzubindenden PHP-Datei zugegriffen werden.
Gibt an, ob der Attributtyp eine Standardwertbeschreibung haben muss.
Dateizeichenfolge Ja n/a. Der Name der zu verwendenden PHP-Datei include
once boolean Nein true Wenn die einzubindende PHP-Datei eingebunden wurde, ob sie noch eingebunden ist (ähnlich der include_once-Funktion in PHP)
assign string Nein n/a Dieses Attribut gibt eine Variable an, die gespeichert werden soll Ausgabe der einzubindenden PHP-Datei

Beispiel

// Variablen aus einer MySQL-Datenbank laden und der Vorlage zuweisen
// Daten aus MySQL abrufen Datenbank und weisen Sie die Daten der Vorlagenvariablen require_once("MySQL.class.php") zu;
$sql = new MySQL;
$sql->query("select * from site_nav_sections order by name",SQL_ALL );
$this->assign('sections',$sql- >record);
?>

index.tpl

-------- -
{* absoluter Pfad oder relativ zu $trusted_dir *}
{* Absoluter Pfad oder relativer Pfad zu $trusted_dir*}
{include_php file="/path/to/load_nav.php"}
{foreach item="curr_section" from=$sections}
< a href="http://www.php1.cn/"> Inhalt einer der integrierten Funktionen von smarty, der PHP-Template-Engine. Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website (www.php.cn).

Stellungnahme:
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