Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [smarty] foreach wielokrotne wywołanie
Forum PHP.pl > Forum > Gotowe rozwiązania > Systemy szablonów
TbQ
Witam.
Od razu zaznaczam, że przeszukiwałem 4 godziny google i wszystkie możliwe fora, aby znaleźć rozwiązanie mojego problemu jednak z żadnym efektem. Problem jest dość banalny, ale nie mam już żadnego pomysłu jak go rozwiązać.

1. Piszę w Zend Frameworku a widok mam pisany z użyciem Smarty.

Mam następujący problem (maksymalnie upraszczam i wyrywam z kontekstu):


Kontroller:

Kod
//wybieramy wszystkie kategorie z bazy danych i przesylamy do widoku
$category = new Shopcategory();
$this->view->category = $category->fetchAll(NULL, NULL, NULL, NULL);



Widok:

Kod
//wyświetlamy kategorie dwa razy tą samą pętlą foreach

{foreach from=$category item=category name=category}
     Zmienna ma wartość: {$category->name}
{/foreach}

{foreach from=$category item=category name=category}
     Zmienna ma wartość: {$category->name}
{/foreach}



Tak! To są dwie takie same pętle.
Wykonuje się tylko pierwsza, każda kolejna nie.

Wcześniej, gdy używałem języka PHP w widoku (przed zainstalowaniem smarty) wszystko działało ślicznie, pętla powtarzała się tyle razy, ile chciałem.

Kod
foreach($this->category as $category) :
       echo 'Zmienna ma wartość: '. $category->name .' ';
   endforeach;

foreach($this->category as $category) :
         echo 'Zmienna ma wartość: '. $category->name .' ';
     endforeach;


Moje pytanie brzmi: Jak zmusić drugą pętlę foreach w smarty do tego, żeby się wykonała od początku?
Czego próbowałem:
1. {assign var=$smarty.foreach.category.index value=0} - wartość się nie zmienia w żadnym momencie [ani w pętli, ani poza nią].
2. {php} Działający kod PHP {/php} - wyrzuca błąd
3. Wstawienie w kontrolerze do każdego przedmiotu z osobna tablicy z całą listą kategorii (wyrzuca błędy, bardzo nieeleganckie rozwiązanie).

Nie będę na razie się za bardzo rozpisywał, bo coś czuję, że rozwiązanie tego problemu jest banalnie proste, tylko ja raczkuję w Smarty..




W oryginale jest to jedna zagnieżdżona pętla, która ma się wyświetlać tyle samo razy, ile jest wyświetlonych przedmiotów jako menu do zmiany kategorii owego przedmiotu.

Pozdrawiam i będę rad za wskazówkę ...
Zyx
Jak każesz skryptowi zapisywać każdy element kategorii do zmiennej przechowującej listę kategorii, tym samym kasując jej pierwotną zawartość, to takie są efekty. To jest równoważne z napisaniem:

  1. <?php
  2. foreach($category as $category)
  3. {
  4.  /// ... kod
  5. }
  6. ?>
TbQ
._.

Dziękuję za pomoc - pomogło.
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.