10 trików w Smarty

Być może sami wykom­bi­no­wa­li­ście więk­szość o czym dzisiaj prze­czy­ta­cie, a może jednak nie…

1. Odwo­ła­nia do metod statycz­nych klasy będą­cej w prze­strzeni nazw.
Nie możemy sobie od tak wywo­ły­wać metod klasy. Trzeba ją najpierw zare­je­stro­wać poprzez regi­sterC­lass():

$smarty->registerClass('Logger', '\My\Beautiful\Logger');

a następ­nie w szablonie:

{Logger::logReport()}

2. Prze­twa­rza­nie szablo­nów bezpo­śred­nio ze stringa.
Czasami prze­cho­wu­jemy kawałki szablo­nów w zmien­nych i chcemy zwró­cić wynik ich prze­twa­rza­nia do zmien­nej. Nic prostszego:

$result = $smarty->fetch('string:My name is {$name}');

3. Ładne grupo­wa­nie dużych liczb po 3 znaki.

{1000000|number_format:0:'':' '}

Da nam wynik 1 000 000 zł

4. Skró­cony zapis tworze­nia zmien­nej w szablo­nie.
Wynik wywo­ła­nia metody przy­pi­szemy do zmien­nej $my_var. Konieczne jest zacho­wa­nie kolej­no­ści: assign idzie drugie, nazwa zmien­nej w „podwój­nych pazurkach”:

{$object->method() assign="my_var"}

5. Tworze­nie tablic asocja­cyj­nych w szablo­nie.
Nie wiedzieć czemu zapis Smar­towi nie pasuje:

{assign var="my_arr" value=array('a' => 'aa', 'b' => 'bb')}

należy użyć sposobu znanego z tworze­nia tablic w PHP 5.4:

{assign var="my_arr" value=['a' => 'aa', 'b' => 'bb']}

6. Bieżąca data.
To oczy­wi­ste, ale może komuś umknęło:

{$smarty.now|date_format:'%d.%m.%Y'}

Wynik 11.03.2013

7. Zaokrą­gla­nie liczb.
Uwaga: Smarty nie jest od wyko­ny­wa­nia obli­czeń. Szablony powinny wyświe­tlać wyniki, a nie zajmo­wać się logiką. Czuj­cie się ostrzeżeni ;-)

{math equation='round(my_val, 1)' my_val=7.95 format='%.1f'}

Wynik 8.0

8. Śledze­nie aktu­al­nej itera­cji
Chcemy nume­ro­wać wier­sze od 1:

{foreach $array as $key => $val}
  {$val@iteration}<br>   
{/foreach}

Wynik:
1
2
3

9. Specjalne akcje dla szcze­gól­nych wier­szy.
Zamiast gimna­sty­ko­wać się ze zlicza­niem wier­szy mamy do dyspo­zy­cji gotowe zmienne:

{foreach $array as $key => $val}
  {if $val@first eq true}pierwszy{/if}
  {$val}
  {if $val@last eq true}ostatni{/if}   
{/foreach}

Co trzeci wiersz:

{foreach $array as $key => $val}
  {if $val@iteration is div by 3}row{/if}   
{/foreach}

10. Użycie deli­mi­te­rów w szablo­nie.
Jeśli koniecz­nie chcemy wyświe­tlić znaki { i } mamy 3 możliwości:

{literal} { } {/literal}
{ldelim} {rdelim}
$smarty->left_delimiter = '[!';
$smarty->right_delimiter = '!]';

Ostatni sposób jest trochę hard­co­rowy, używać jeśli rzeczy­wi­ście wszę­dzie pełno znaków { i }.

Podobne wpisy:

  1. Rozsze­rza­nie możli­wo­ści Smarty za pomocą pluginów
  2. O mody­fi­ka­to­rach w Smarty i opisie słow­nym inter­wa­łów czasu
  3. Pułapka refe­ren­cji w foreach
  4. Wygrze­bane z GitHuba (6) : Monolog

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.

Możesz użyć następujących tagów oraz atrybutów HTML-a: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <p> <pre lang="" line="" escaped=""> <q cite=""> <strike> <strong>