Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [smarty] Zmienne
Forum PHP.pl > Forum > Gotowe rozwiązania > Systemy szablonów
klinski
Witam, mam nadzieje ze logicznie wyjaśnię o co mi chodzi.

W zmiennej
Kod:

  1. {$items.data.NAZWA}



mam cos zapisany tylko z poziomy pliku *.tpl nie znam nazwy NAZWA. Nazwa ta jest zapisana w zmiennej
Kod:

  1. {$items.data.pan}



Probowałem różnych zapisów aby osiągnąć zamierzony cel.
Np zapis taki
Kod:

  1. {$items.data.$items.data.pan}



powoduje ze w cache'u powstaje wpis
Kod:

  1. <?php echo $this->_tpl_vars['items']['data'][$this->_tpl_vars['items']]['data']['pan']; ?>



Juz prawie jest ok tylko kwadratowy nawias zamykający po drugim items jest nie w tym miejscu. Jak go ręcznie w pliku z cacha przeniose na koniec i zapisze to wynik jest ok.
Nie wiem jak mam zapisac w *.tpl aby bylo dobrze.
nospor
Kod
{assign var="temp" value=$items.data.pan}
{$items.data.$temp}
klinski
Dzięki za szybką odpowiedź.
anetad
Mam problem zbliżony tematycznie szukałam na google przez 3 godziny i nic potrzebuje użyć zawartości jednej zmiennej w smarty jako nazwę zmiennej. Zmienna istnieje ale nie wiem jak ona się nazywa, nazwa zmiennej jest właśnie w zmiennej. w php jest coś takiego ${$zmienna} i potrzebuje takiego odpowiednika w smarty
A jak wykonać coś takiego (tylko że to oczywiście nie działa):

  1. {foreach from=$kategoria_tab item=element key=key name=lista1}
  2. <dt>
  3. <a href="#" class="nazwa">{$element->kategoria}</a>
  4. <a href="?Id=strony&Mode=edytuj-kategorie" class="polecenie">edytuj</a>
  5. <a href="?Id=strony&Mode=dodaj-podkategorie" class="polecenie">dodaj</a></dt>
  6.  
  7. {foreach from=${$element->kategoria} item=element2 key=key name=lista2} <!--konkretnie o ten fragmeng chodzi-->
  8.  
  9.  
  10. <dd>
  11. <a href="#" class="nazwa">{$element2->podkategoria}</a>
  12. <a href="#" class="znaki"><img src="img/kosz.png" alt=""></a>
  13. <a href="?Id=strony&Mode=edytuj-kategorie" class="polecenie">edytuj</a>
  14. </dd>
  15. {foreachelse}
  16. brak podstron
  17. {/foreach}
  18.  
  19. {foreachelse}
  20. brak kategorii
  21. {/foreach}
nospor
wejdź w tryb php i zrob to w php
http://www.smarty.net/manual/en/language.function.php.php
anetad
Problem 1: czy da się do otworzonego trybu php przenieść zmienną (element z pętli foreach) {$element->kategoria} ? czyli aby działało:
  1.  
  2. {php}
  3. $element->kategoria
  4. {/php}
  5.  


bo mi to nie działa

jeśli nie to czy można w otwartym trybie php skorzystać ze zmiennych w pliku php który generuje dane wykorzystywane w powyższej pętli foreach

jeśli nie to znaczy że mam wrzucić do tpl-a cały skrypt generujacy zawartość powyższej pętli foreach? lub znaleźć inny sposób na wyciągnięcie tych danych do tpl-a ?
strife
Na forum Smarty, znalazłem taką informację:

  1. {php}
  2. global $smarty;
  3. ...
  4. $product = $smarty->get_template_vars('product');
  5. echo $product['name'];
  6. {/php}


Spróbuj w ten sposób. Niestety ta metoda zawiera global, co nie jest eleganckie i bezpieczne.
nospor
w sekcji {php} to zmiennej szablonu odwolujesz sie tak:
$this->zmienna
Nie trzeba dziko kombinowac jak to pokazuje strife winksmiley.jpg

czyli u ciebie by to bylo:
$this->element->kategoria
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-2024 Invision Power Services, Inc.