18.6. Template/Script Komponenten Dieser Tip ist nicht ausgiebig getestet, aber dennoch eine nette Idee. Verwendung auf eigene Gefahr. ;-)
Normalerweise werden Variablen dem Template wie folgt zugewiesen:
In Ihrer PHP-Applikation werden die Variablen zusammengestellt
(zum Beispiel mit Datenbankabfragen). Danach kreieren Sie eine
Instanz von Smarty, weisen die Variablen zu und geben das Template aus.
Wenn wir also zum Beispiel einen Börsenticker in unserem
Template haben, stellen wir die Kursinformationen in unserer Anwendung
zusammen, weisen Sie dem Template zu und geben es aus. Wäre es jedoch nicht
nett diesen Börsenticker einfach in ein Template einer anderen Applikation
einbinden zu können ohne deren Programmcode zu ändern?
Sie können PHP-Code mit in Ihre Templates einbetten.
So können Sie Templates erstellen, welche die Datenstrukturen
zur Anweisung der eigenen Variablen enthalten. Durch die Bindung von
Template und Logik entsteht so eine eigenständig lauffähige Komponente.
Beispiel 18-7. Template/Script Komponenten {* Smarty *}
// unsere funktion um die börsenkurse zu holen
function fetch_ticker($symbol,&$ticker_name,&$ticker_price) {
// hier wird $ticker_name und $ticker_price zugewiesen
}
// aufruf der funktion
fetch_ticker("YHOO",$ticker_name,$ticker_price);
// zuweisung der variablen
$this->assign("ticker_name",$ticker_name);
$this->assign("ticker_price",$ticker_price);
Symbol: Preis: Seit Smarty 1.5.0, gibt es einen noch einfacheren und auch saubereren Weg
in dem man die Logik mit {include_php ...} einbindet. So kann man weiterhin
die Logik vom Design getrennt halten. Mehr Informationen gibt es in der include_php Dokumentation.
Beispiel 18-8. Template/Script Komponenten mit include_php load_ticker.php
---------------
<?php
// unsere funktion um die börsenkurse zu holen
function fetch_ticker($symbol,&$ticker_name,&$ticker_price) {
// hier wird $ticker_name und $ticker_price zugewiesen
}
// aufruf der funktion
fetch_ticker("YHOO",$ticker_name,$ticker_price);
// zuweisung der variablen
$this->assign("ticker_name",$ticker_name);
$this->assign("ticker_price",$ticker_price);
?>
index.tpl
---------
{* Smarty *}
{include_php file="load_ticker.php"}
Symbol: Preis:
|