Smarty Template Engine 2.díl - První krůčky
Šablonovací systém Smarty máme nainstalovaný v prostoru, kde se bude v budoucnu rozkládat naše webova prezentace, proto se můžeme podívat na jeho základní funkce.Uložení do hlavičky
Abychom v každém jednotlivém PHP skriptu nemuseli znova a dokola vytvářet tzv. konstruktor třídy Smarty, uložíme si tuto část do speciální souboru, do kterého se obvykle programátoři ukládají např. připojení k DB, základní nastavení přístupu k DB atd... Co takový konstruktor je? Pro Ty z Vás, jež za sebou mají základní objektově orientované programování nejde o nic nového, pro Ty ostatní: Jde zjednodušeně o vytvoření jakési třídy, přes kterou budeme přistupovat k metodám, jež nám tento šablonovací systém nabízí. Uložení do speciálního souboru nám ušetří práci s jeho následným vytvářením na každé jednotlivé stránce naší webové prezentace, jež budeme chtít zobrazit.Ve složce ./www/test/ (dále jen test) vytvoříme soubor hlavicka.php s tímto obsahem:
<?php
require_once("./smarty/Smarty.class.php");
$smarty = new Smarty();
$smarty->template_dir = './smarty/templates';
$smarty->compile_dir = './smarty/templates_c';
$smarty->cache_dir = './smarty/cache';
$smarty->config_dir = './smarty/configs';
?>
Co jsme tedy provedli? Na začátku skriptu načteme soubor Smarty.class.php, následně vytvoříme objekt smarty a v posledních 4 řádcích už přistupujeme k metodám třídy smarty, v kterých nastavujeme umístění jednotlivých složek, jež tato třída používá. Přesně to samé jsme si v minulém díle ukazovali v testovacím skriptu. Není potřeba zapamatovat si tento zápis nazpaměť, protože více než jednou už ho potřebovat nebudeme.
Obsah index.php, přiřazení, zobrazení
Oproti minulém obsahu skriptu index.php tedy nastane menší změna, a soubor index.php bude vypadat následovně<?php
require_once("./hlavicka.php");
$libovolna_promenna = "Ahoj Smarty.";
$smarty->assign('pozdrav' , $libovolna_promenna);
$smarty->display('index.tpl');
?>
Jak jste již možná správně pochopili, na prvním řádku načteme příkazy ze souboru hlavicka.php. Na dalším řádku vytvoříme v PHP libovolnou proměnnou , v tomto případě libovolna_promenna, do níž uložíme volitelný text.
Metoda assign pak přiřazuje do šablony tuto proměnou. V apostrofech je naše libovolné pojmenování proměnné v šabloně.
POZOR, název budoucího jména proměnné v šabloně se píše bez značky dolaru!
Metoda display pak určí, do které šablony se mají všechny přiřazené proměnné načíst.
Pokud jste pouze (X)HTML kodér, o tuto část se stará programátor. Na vás zbývá následující:
Soubor index.tpl zůstane nezměněn, přesto připomenu jeho obsah (přidáme pouze základní HTML tagy):
<html>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="cs" lang="cs">
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<meta http-equiv="Content-language" content="cs" />
<title>
Smarty - index
</title>
</head>
<body>
<div>{$pozdrav}</div>
</body>
</html>
Povšimněte si, že obsah proměnné pozdrav vypíšeme uzavřením pouze do složených závorek.
Již v tuto chvíli se dá odpozorovat budou zpřehlednění a oddělení aplikační a prezenční logiky. Kodér sice stále musí do HTML vkládat speciální značky, uzavřením do složených závorek se však postup velice zjednodušuje, zrychluje a kód vypadá mnohem čitelněji.
Shrnutí
- assign - metoda s parametry ('budouci_jmeno_promenne_v_souboru_tpl' , $promenna_v_php);
Má za úkol přiradit do šablony data z PHP skriptu, nebo-li:promenna_php->promenna_tpl - display - metoda s parametry ('umisten_a_jmeno_sablony');
Má za úkol určit do které šablony se mají načíst proměnné, přiřazené metodou assign