Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [smarty] foreach wielokrotne wywołanie, Problem z kilkuktornym wykonaniem tej samej pętli foreach
TbQ
post 6.04.2009, 00:19:50
Post #1





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 6.12.2008

Ostrzeżenie: (0%)
-----


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ę ...
Go to the top of the page
+Quote Post
Zyx
post 7.04.2009, 07:57:10
Post #2





Grupa: Zarejestrowani
Postów: 952
Pomógł: 154
Dołączył: 20.01.2007
Skąd: /dev/oracle

Ostrzeżenie: (0%)
-----


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. ?>


--------------------
Specjalista ds. głupich i beznadziejnych, Zyx
Nowości wydawnicze: Open Power Collector 3.0.1.0 | Open Power Autoloader 3.0.3.0
Go to the top of the page
+Quote Post
TbQ
post 7.04.2009, 22:18:05
Post #3





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 6.12.2008

Ostrzeżenie: (0%)
-----


._.

Dziękuję za pomoc - pomogło.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 14.08.2025 - 09:03