Smarty Template Engine 20.díl - Funkce V.

Napsal (») 26. 6. 2009 v kategorii PHP/HTML, přečteno: 1486×
obrazky/smarty.gif

Smarty Template Engine 20.díl - Funkce V.


V následujících dílech si ukážeme uživatelské funkce, implementované do knihovny Smarty.

assign

Tento příkaz již známe z předchozích dílů ve dvou provedeních. Slouží nejen jako metoda třídy Smarty, pro přiřazení hodnot z aplikační, do prezenční logiky, ale můžeme ji využít i přímo v templatech pro nastavení námi definované proměnné.


  • var – název proměnné (povinný parametr)

  • value – hodnota proměnné (povinný parametr)



Použití v šabloně:
index.tpl
{include file='./hlavicka.tpl' hlavicka='Smarty Template Engine'}
<p>
{assign var=pozdrav_1 value='ahoj'}
{assign var=pozdrav_2 value='Dobry den'}

Pozdrav je: <strong>{$pozdrav_1}</strong>, nebo <strong>{$pozdrav_2}</strong>
</p>
{include file='./paticka.tpl'}


Použití pro přiřazení proměnné z aplikační do prezeční logiky

index.php
<?php
require_once("./hlavicka.php");

$_SESSION['ss_id'] = 2;

$user[0] = array('id' => '0','name' => 'Tom Jedna', 'ui' => '1');
$user[1] = array('id' => '2','name' => 'Martin Dva', 'ui' => '2');

$smarty->assign('user', $user);

$smarty->display('index.tpl');
?>


Použití array je právě zde, použité podobným duchem, pouze s jiným způsobem, jako v předchozím příkladě.

index.tpl
{include file='./hlavicka.tpl' hlavicka='Smarty Template Engine'}
<p>
{foreach from=$user item=vystup}
ID:<strong>{$vystup.id}</strong>, jmeno:<strong>{$vystup.name}</strong>
</p>
{/foreach}
{include file='./paticka.tpl'}


I v samotné šabloně ovšem můžeme dále přiřazovat nové proměnné. Důležité je pouze nezapomenout, že název jedné proměnné by se něměl v rámci jedné šablony opakovat.

{include file='./hlavicka.tpl' hlavicka='Smarty Template Engine'}
<p>
{assign var=iterace value=0}
{foreach from=$user item=vystup}
{assign var=iterace value=$iterace+1}
ID:<strong>{$vystup.id}</strong>, jmeno:<strong>{$vystup.name}</strong> (iterace: {$iterace})
</p>
{/foreach}
{include file='./paticka.tpl'}


Nad foreach cyklem tedy vytvoříme proměnnou „iterace“ pomocí příkazu assign. Při každém opakování cyklu pak jakoby vytvoříme novou proměnnou „iterace“, do které načteme starou hodnotu „$iterace“ + 1. Povšimnětě si způsobu zápisu, při takovéto práci s proměnnou.
Do položky var se napíše prostý text názvy proměnné. A protože od proměnné vyžadujeme její vlastní iterování, nebo-li zvyšování své hodnoty o určitou konstantu, porušíme pravidlo jedné unikátně přiřazené proměnné a do ní samotné vložíme proměnnou stejně jako bychom ji vypisovali (tedy jako „$promenna“), a přičteme jedničku. Místo jedničky bychom ale samozřejmě mohli např. Přičítat jinou proměnnou, či slepovat dohromady text apod.

counter

Pokud už je řeč o iterovaní proměnných, i na tuto možnost mysleli vývojáři Smarty. Právě funkce counter, nebo-li počítadlo, plní automaticky funkci iterátoru (v PHP obdoba „for“ cyklu), včetně možnosti zvolení směru, počatečního stavu, či velikosti kroku.


  • name – unikátní jméno počítadla, kterým ho budeme volat dále v šabloně, dafault: default(nepovinný)

  • start – počateční hodnota počítadla, defaultně: 1(nepovinný)

  • skip – velikost kroku, kladné celé číslo, defaultně: 1(nepovinný)

  • direction – směr počítadla, respektive přičítání/odčítání (reprezentují hodnoty „up“/„down“)d , defaultně: „up“(nepovinný)

  • print – zda povolit vypisování první hodnoty počítadla, „true“/„false“, defaultně: „true“(povinný)

  • assign – teplate, kterému má být počítadlo přístupné, zadává se jako String, tedy text, defaultně: „“(nepovinný)



Jako příklad si ponecháme obsah index.php z příkladu u assign a pomocí counteru vypíšeme nejprve stejný obsah, jako pomocí assign, změnou v šabloně takto:
index.tpl
{include file='./hlavicka.tpl' hlavicka='Smarty Template Engine'}
<p>
{foreach from=$user item=vystup}
ID:<strong>{$vystup.id}</strong>, jmeno:<strong>{$vystup.name}</strong> (iterace: {counter})
</p>
{/foreach}
{include file='./paticka.tpl'}


Ukázka parametrů příkazů si demonstrujeme zde
index.zpl
{include file='./hlavicka.tpl' hlavicka='Smarty Template Engine'}
<p>
{counter start=10 skip=10 print=false direction=up}
{foreach from=$user item=vystup}
ID:<strong>{$vystup.id}</strong>, jmeno:<strong>{$vystup.name}</strong> (iterace: {counter})
</p>
{/foreach}
{include file='./paticka.tpl'}


Nastavíme počáteční hodnotu na 10, krokování na deset taktéž a zakážeme vypsání první proměnné (pouze pro ukázku). Směr nastavíme na „up“, tedy iteration.

Výsledek by měl vypadat takto:
ID:0, jmeno:Tom Jedna (iterace: 20)
ID:2, jmeno:Martin Dva (iterace: 30)
Facebook Twitter Topčlánky.cz Linkuj.cz

Komentáře

Zobrazit: standardní | od aktivních | poslední příspěvky | všechno
Článek ještě nebyl okomentován.


Nový komentář

Téma:
Jméno:
Notif. e-mail *:
Komentář:
  [b] [obr]
Odpovězte prosím číslicemi: Součet čísel jedna a devět