Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MVC] foreach wewnątrz foreach (zależny od pierwszego), w widoku, jak przekazać z kontrolera/modelu?
Forum PHP.pl > Forum > Przedszkole
Damonsson
Mam takie pytanie banalne:

W kontrolerze tak przekazuję dane do widoku:

  1. $this->view->kategorie = $this->model->kategorie();

model zwraca tablicę z wynikami, kontroler przekazuje dane do widoku, w widoku wyświetlam je:

  1. foreach($this->kategorie as $kategoria):
  2. echo $kategoria['id']
  3. endforeach;

Wszystko super fajnie.


Ale teraz chciałbym pobrać jakieś dane, zależne od $kategoria['id']

Czyli teoretycznie w widoku napisałbym coś takiego:

  1. foreach($this->kategorie as $kategoria):
  2.  
  3. foreach($this->tematy as $temat):
  4.  
  5. echo $temat['nazwa']
  6.  
  7. endforeach;
  8.  
  9. endforeach;


A w kontrolerze

  1. $this->view->kategorie = $this->model->kategorie();
  2. $idKategorii = ? // no właśnie skąd wziąć idKategorii dla każdego tematu, skoro w kontrolerze jest cała tablica, a pętla dla kategorii robi się dopiero w widoku
  3. $this->view->tematy = $this->model->tematyDlaKategorii($idKategorii);


Mógłbym się odwołać do metody modelu, bezpośrednio z widoku, ale chyba tego nie należy robić prawda?

Powinienem 1. foreach (dla kategorii) zrobić w kontrolerze i utworzyć z niego ręcznie tablicę, chyba razem z tablicą tematów i dopiero przekazać te dwie stworzone tablice do widoku?
Crozin
Cytat
Mógłbym się odwołać do metody modelu, bezpośrednio z widoku, ale chyba tego nie należy robić prawda?
Tak się składa, że jest to podstawą MVC, która częściowo wyróżnia go spośród innych architektur na 3-4 litery z M, V, C, H czy P w nazwie. W Twoim przypadku* musiałbyś wszystkie dane przygotować w modelu i zwrócić w formie tablicy kategorii, gdzie każda z kategorii jest tablicą/obiektem posiadającym element "tematy".

* czy ogólnie w przypadku większości PHP-owych FW.
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.