Smarty: assign w szablonie i tablica

11 lutego 2008

Przyczepie się jeszcze raz do smarty :) Byłem i nadal jestem pod dużym wrażeniem możliwości tego systemu szablonów ale niestety okazuje się, że i tutaj są pewne niedoróbki. Poprzedni problem (Smarty: {include} i widoczność zmiennych) można opisać jako świadomy wybór twórców smarty. Szkoda tylko, że nie dali żadnego wyboru programistom. Natomiast to o czym chcę dzisiaj napisać to już wyraźna luka w tak przecież bogatych możliwościach tego systemu.

A chodzi o {assign}. Ta prosta komenda pozwala stworzyć zmienną bezpośrednio z poziomu szablonu. Działa to tak:

SMARTY:
  1. {assign var='zmienna' value='test'}
  2. Właśnie stworzyliśmy zmienną $zmienna o wartości {$zmienna}

Wyświetli nam się to:

CODE:
  1. Właśnie stworzyliśmy zmienną $zmienna o wartości test

Jak widać, zastosowanie jest banalnie proste. Ale jakie było moje zaskoczenie gdy okazało się, że nie mogę w ten sposób stworzyć tablicy! To naprawdę zadziwiające biorąc pod uwagę, że smarty ma doskonale zaimplementowany mechanizm tablic. Próbowałem różnych sposobów, wymienię chociażby dwa najbardziej sensowne:

SMARTY:
  1. {assign var='zmienna' value=array(0=>'test')}
  2. {assign var='zmienna[0]' value='test'}

Czytaj dalej »