Smarti
Smarti je sistem za kreiranje šablona veb stranica napisanih u PHP-u. Kao takav, on služi za razdvajanje implementacije dotične veb stranice od njene prezentacije, što olakšava održavanje i njenog izgleda i njene funkcionalnosti, kao i paralelan rad programera i dizajnera. Činjenica da omogućava proširivanje skupa komandi, kao i korišćenje PHP koda kada je to neizbježno, čini Smarti vrlo fleksibilnim alatom za održavanje šablona veb stranica.
Programer(i) | Monte Ohrt, Messju Mohr |
---|---|
Stabilno izdanje | 2.6.19
/ 11. februar 2008. |
Repozitorijum | |
Tip | Sistem za kreiranje veb šablona |
Licenca | LPGL |
Veb-sajt | www.smarty.net |
Smartijev kod se u osnovi sastoji od običnog HTML koda, u koji se umeću Smartijeve komande. Nakon obrade PHP-ovog prevodioca, rezultujući kod je običan HTML spreman za prikaz u veb pregledaču.
Komande Smartija se označavaju vitičastim zagradama; to mogu biti komande za prikaz sadržaja promjenljivih, komande za kontrolu toka, tj. petlje i grananja, i funkcije, koje mogu biti ugrađene u Smartiju i definisane od strane programera.
Primjer uredi
Slijedi primjer jedne skripte napisane u PHP-u i odgovarajućeg šablona napisanog u Smartiju.
<?php
// Датотека "tablicaMnozenja.php"
// У односу на локацију скинутог пакета, у код се укључује дефиниција Смартија
define("SMARTY_DIR", "smarty-2.6.9/" );
require_once(SMARTY_DIR. "Smarty.class.php");
// Формира се објекат Смартија, помоћу којег се извршава сва даља „комуникација“
// PHP-а и Смартија.
$smarti = new Smarty();
$tablicaMnozenja = Array();
// Смарти ће видјети само оне промјенљиве које се припреме помоћу метода „assign“
$smarti->assign("naslov", „Таблица множења: " );
for ($i = 1; $i <= 10; $i++ ) {
$tablicaMnozenja[$i] = Array();
for ($j = 1; $j <= 10; $j++ )
$tablicaMnozenja[$i][] = $j;
}
$smarti->assign("tablicaMnozenja", $tablicaMnozenja );
// Када су све промјенљиве спремне, може се позвати метода „display“ да би се
// приказао наш шаблон
$smarti->display("tablicaMnozenja.tpl" );
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html>
<head>
<title>{$naslov|escape}</title>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
</head>
<body>
{* Штампа се наслов странице, из промјенљиве „naslov“, чија је вриједност била
додијељена Смартијевом командом „assign“ *}
<h1>{$naslov|escape}</h1>
<table border="1">
{* Двоструком петљом штампају се производи елемената дводимензионалног низа *}
{foreach from="$tablicaMnozenja" key="y" item="yOsa"}
<tr>
{foreach from="$yOsa" item="x"}
<td>{$y * $x}</td>
{/foreach}
</tr>
{/foreach}
</body>
</html>