Smarty Template Engine 12.díl - Řídící struktury III.

Napsal (») 17. 5. 2009 v kategorii PHP/HTML, přečteno: 1514×
obrazky/smarty.gif

Smarty Template Engine 12.díl - Řídící struktury III.


Jednou z dalších možností cyklů ve Smarty, jež každý kodér někdy bude potřebovat využít, jsou jejich vnitřní proměnné. Přístup k nim se v rámci "foreach" a „section“ liší pouze v popsání typu cyklu, výsledek je u obou totožný.
Dále nás ještě překvapí cyklus section, možností jeho atributů je totiž více.

Atributy příkazu section


  • name – jméno section, unikátní pro šablonu

  • loop – jméno procházené proměnné

  • start – hodnota, kterou má cyklus brát jako výchozí od začátku pole. V případě záporného čísla počítá section hodnotu od konce pole. V případě zadání hodnoty, jež neleží v rozmezí, si najde section sám hodnotu nejbližší (nepovinná)

  • step – krok jednoho cyklu. V případě záporného čísla bude cyklus iterovat pozpátku

  • max – maximální počet iterací cyklu (nepovinná)

  • show – (true/false) – určuje zobrazení sekce (nepovinná)


Pokud bychom tedy chtěli dosáhnout stejného výsledku, jako při vynechání nepovinných atributů, vypadal by příkaz section takto:
{section name=name loop=$variable step=1 start=0 show=true}
{/section}

Pokud bychom např. rádi vypisovali pouze sudé záznamy a to od konce a pozpátku, použijeme následující syntaxi. (Např. pro 20 záznamů)
{section name=variable loop=$name step=-2 start=19 show=true}
{/section}


Vnitřní proměnné

foreach

Přístup u foreach je následující syntaxí:
{$smarty.foreach.nazev_cyklu.vlastnost_cyklu}

section
{$smarty.section.nazev_cyklu.vlastnost_cyklu}


  • index – slouží k zjištění aktuálního indexu v poli (číslované od nuly)

  • index_prev – slouží k zjištění předešlého indexu (při první iteraci -1)

  • index_next – slouží k zjištění následujícího indexu, respektující již při první iteraci nastavení step (u section)

  • iteration – nezávisle na nastavení atributů max, step, start vypisuje pořadí aktuální iterace

  • first – obsahuje hodnotu true, pokud jde o první iteraci

  • last – obsahuje hodnotu true, pokud jde o poslední iteraci

  • loop – obsahuje poslední hodnotu vlastnosti index (viz výše). Je možno vypsat i mimo tělo cyklu

  • show – obsahuje hodnotu atributu show u section

  • total – obsahuje celkový počet iterací a stejně jako loop může být použita i mimo tělo cyklu


  • Jako krásný příklad nám může posloužit např. vypsání výsledkové listiny, u kterého můžeme využít vlastnosti iteration.

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

    $ttl = array('Mgr.','Ing.','');
    $smarty->assign('ttl',$ttl);

    $firstName = array('John','Josh','Jane');
    $smarty->assign('firstName',$firstName);

    $lastName = array('First', 'Second', 'Third');
    $smarty->assign('lastName',$lastName);

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


    index.tpl
    <!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>
    <p>
    {section name=person loop=$lastName step=-1 start=2 show=true}
    <p>
    {$smarty.section.person.iteration + 1}. {$ttl[person]|default:'Mr.'} {$firstName[person]} {$lastName[person]}<br/>
    </p>
    {/section}
    </p>
    </div>
    </body>
    </html>

    Na výpisu dostaneme jména, včetně umístění :). Příkladů je samozřejmě mnohem více, ale většinou se používají dohromady s podmínkami, o kterých budeme mluvit v příštím díle.
Facebook Twitter Topčlánky.cz Linkuj.cz

Komentáře

Č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 tři a jedna