Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [ZendFramework]Zend_Navigation a 2 menu
Forum PHP.pl > Forum > PHP > Frameworki
ShadowD
Używam Zend_Navigation do menu, na stronie znajduje się jednak więcej menu niż jedno i zaczynają się problemy, nie mam pojęcia jak to pogodzić, próbowałem tworzyć 2 obiekty Zend_Navigation i przekazywać nie przez parametr view->navigation(), a przez zmiennie i w widoku użyć helpera navigation, niby coś działa, ale wyświetla się dwa razy menu zadeklarowane później. Jest jakaś opcja obejścia tego problemu?

Edit:
http://framework.zend.com/issues/browse/ZF...anel#issue-tabs

To chyba na tyle w kwestii marzeń, może wdrożą to kiedyś, czekać zostaje i radzić sobie na około. ;]

Coś co działa powiedzmy tak jak powinno:

  1. <?php echo $this->navigation()->Menu($this->mainMenu); ?>
  2. <?php echo $this->navigation()->Menu($this->footerMenu); ?>
Fluke
Też tak miałem i gdzieś znalazłem że można to zrobić w ten sposób:

Przypisujesz obiekt Zend_Navigation do zmiennej $view a następnie w widoku robisz $view->navigation($view->obiektNavigation).
ShadowD
Cytat(Fluke @ 12.05.2012, 14:57:27 ) *
Też tak miałem i gdzieś znalazłem że można to zrobić w ten sposób:

Przypisujesz obiekt Zend_Navigation do zmiennej $view a następnie w widoku robisz $view->navigation($view->obiektNavigation).


Hmmm, wydaję mi się że właśnie tak robiłem - wydawało się to logiczne i fajnie by było gdyby faktycznie działało! ;]

Plugin obsługujący templatkę:
  1. $menu = new Zend_Navigation($menuData['mainMenu']);
  2. $view->mainMenu= $menu;
  3.  
  4. $menu = new Zend_Navigation($menuData['footerMenu']);
  5. $view->footerMenu= $menu;


Ofc tablica $menuData istnieje i ma dwie różne tablice z elementami menu.

Teraz widok:
  1. <?php echo $this->navigation($this->mainMenu); ?>
  2. <?php echo $this->navigation($this->footerMenu); ?>


Rezultat to dwukrotnie wyświetlone mainMenu, więc coś jest nie tak mam wrażenie że helper navigation() działa tak jak headXXX() czyli zapisuje sobie do pamięci pierwsze dane które mu dostarczymy i każde kolejne go mało obchodzą. ;]

Znalazł może ktoś inne wyjście bądź widzi coś w moim kodzie "nie takiego"?

EDIT:
Ooo, coś chyba mi się w tablicy pomieszało więc rozwiązanie może nawet będzie prawidłowe! ;]
EDIT2:
W widoku wstawiłem:
  1. <?php echo $this->navigation($this->mainMenu); ?>
  2. <?php echo '<hr><pre>'; print_r($this->navigation($this->mainMenu)); echo '</pre></hr>'; ?>
  3. <?php echo $this->navigation($this->footerMenu); ?>
  4. <?php echo '<hr><pre>'; print_r($this->navigation($this->footerMenu)); echo '</pre></hr>'; ?>


$this->mainMenu i $this->footerMenu mają prawidłowe wartości, czyli zawierają dwa różne menu. Po wywołaniu powyższego kodu dzieją się dziwne rzeczy mianowicie wygląda to tak jak bym wyświetlił całą zawartość $this ($view), zawiera wszystkie informacje widoku, od wczytanych stylów po zawartość podstrony, jednak przy echo wyświetla poprawnie menu, jednak za każdym razem jest to mainMenu... Ewidentnie wariuje tutaj helper navigation(), nie mam pojęcia tylko dlaczego, czy na prawdę by obsługiwać kilka menu muszę napisać własny helper?
Pilsener
A nie możesz wrzucić wszystkiego do jednego Navigation i wyświetlać tylko pojedynczej gałęzi jako oddzielnego menu? Albo tak po chamsku i brutalnie - wykorzystać dwa widoki, oddzielny do każdego menu i w jednym wywołać po prostu drugi wykorzystując helper ->action a jeśli da się w widoku, to ->render.
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.