Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [Smarty]Przypisywanie do zmiennej tablicy wewnątrz szablonu
Forum PHP.pl > Forum > Gotowe rozwiązania > Systemy szablonów
xamil
Witam.

Jak mogę wewnątrz szablonu przypisać do zmiennej jakąś tablice? Czyli na poziomie szablonu chcę wykonać coś co na poziomie php wyglądałoby tak:
  1. <?php
  2. $zmienna=array('a','b','c','d')
  3. ?>


Pozdrawiam, Kamil
php programmer
W manualu nic nie pisze na ten temat,
a nie lepiej zrobić takie przypisanie w php,
a potem tablica przypisać do zmiennej smarty?
nospor
Cytat
W manualu nic nie pisze na ten temat,
Czy oby napewno?
http://smarty.php.net/manual/en/language.function.php.php
Oczywiscie jesli ciagle mowimy o smarty smile.gif
php programmer
nospor: Ale przecież pytanie nie dotyczyło wstawki php,
tylko jak zrobić w smarty coś co w php zrobiło by się tak.
bigZbig
Mozna uzyc {assign}, ale tylko do przypisania wartosci bedacej stringiem. Jesli chcesz przypisac tablice to niestety jedyna mozliwosc daje uzycie bloku {php} o ktorym pisal nospor (@php programer - moim zdaniem odpowiedz nospora jest jak najbardziej wlasciwa bo w smarty do robienia takich rzeczy jak w php sluza wlasnie znaczniki {php}, co nie zmienia faktu, ze jest to generalnie kiepski pomysl aby robic w szablonie cos co powinno sie dziac poza nim)
nazihipi
Cytat(xamil @ 22.08.2006, 08:46 ) *
Jak mogę wewnątrz szablonu przypisać do zmiennej jakąś tablice?[/php]

nie da się jeśli chodzi Ci o coś takiego
  1. { $arrCopy = $array }

możesz użyć bloku {php} o którym wspomnieli koledzy wyżej...
xamil
Cytat(php programmer @ 22.08.2006, 09:10 ) *
a nie lepiej zrobić takie przypisanie w php,
a potem tablica przypisać do zmiennej smarty?
Myślałem, że wrażnie napisałem co chce osiągnąć?winksmiley.jpg Wiem, że tak się da ale po prostu mam inną potrzebe. Krótkie wyjaśnienie. Mam szablon w którym na dzień dzisiejszy mam listę jakiś 6 powiedzmy linków. Poza jedną zmienną rzeczą nie różnią się praktycznie niczym więc fajnie by było zamiast 6 razy coś wypisywać lepiej zrobić pętle na tych 6 elementach. Łatwiejsze w modyfikowaniu i przejrzystsze. Nie ma żadnych szans aby liczba tych opcji kiedykolwiek się zwiększyła więc nie ma sensu ich assignować w php. W sumie to jeśli by to było tylko tyle to mimo wszystko bym je assignował ale jest jeszcze jedna rzecz. Szablon jest wyykorzystywany w wielu metodach php. Za każdym razem każda z tych metod musiałaby skądś czytać liste opcji i ją assignować do template'a. Dlatego rozwiązanie w stylu
  1. <?php
  2. {$tablica=array('element1',element2',element3',element4',element5')}{section name=id loop=tablica}{$tablica[id]}{/section}
  3. ?>
wydawało mi się dobrym pomysłem... szkoda, że nie działa.

Dziękuje wszystkim wam za odpowiedzi. Chyba wykorzystam tą metodę co opisałem czyli będę przypisywał w poszczególnych metodach a liste elementów będę brał z konfiguracji

Pozdrawiam
php programmer
Cytat
Szablon jest wykorzystywany w wielu metodach php.
Za każdym razem każda z tych metod musiałaby skądś czytać liste opcji i ją assignować do template'a

Chyba mijasz się z podstawową ideą szblonów,
szblon ma pokazywać jedynie efekt końcowy,
a nie wykonywać operacje logiczne,

Cytat
Za każdym razem każda z tych metod musiałaby skądś czytać liste opcji i ją assignować do template'a

No to co za problem wsadzić to w php do funkcji,
po to stworzono funkcję aby wsadzać tam kod, który ma
być wielokrotnie wykorzystywany.
nospor
A jesli juz tak bardzo sie upierasz, by miec to w szablonie, to napisze se plugin, ktory bedzie assign robil do szablonu, a plugin ten wywoluj w szablonie.
Mordor
Witam

Sam również miałem potrzebę przypisania do zmiennej w szablonie tablicy. Rozwiązanie znalazłem na stronie http://smarty.incutio.com/?page=SmartyTips.

Wygląda ono następująco :


  1. {assign var="tablica" value=","|split:"wartosc1,wartosc2,wartosc3"}
  2.  
  3. lub, gdzie zmienna to string np. wiersz1,wiersz2,wiersz3
  4.  
  5. {assign var="tablica" value=","|split:$zmienna }
  6.  
  7. "," jest separatorem elementów tablicy.


Jakoś nie mogłem znaleźć nigdzie w dokumentacji smarty informacji na temat modyfikatora split, ale rozwiązanie działa.

Pozdrawiam
Marcin
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.