Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [ZendFramework]Zend_Navigation a 2 menu
ShadowD
post
Post #1





Grupa: Zarejestrowani
Postów: 1 333
Pomógł: 137
Dołączył: 25.03.2008
Skąd: jesteś??

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


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); ?>


Ten post edytował ShadowD 12.05.2012, 15:31:42


--------------------
Mój blog - o wszystkim i niczym ale zazwyczaj związane z informatyką! ;-)
Githube

Usługi spawalnicze i monterskie | Park linowy Lublin i Okunince
Go to the top of the page
+Quote Post
Fluke
post
Post #2





Grupa: Zarejestrowani
Postów: 247
Pomógł: 9
Dołączył: 20.09.2010
Skąd: Kraków

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


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

Ten post edytował Fluke 12.05.2012, 13:57:58
Go to the top of the page
+Quote Post
ShadowD
post
Post #3





Grupa: Zarejestrowani
Postów: 1 333
Pomógł: 137
Dołączył: 25.03.2008
Skąd: jesteś??

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


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?

Ten post edytował ShadowD 12.05.2012, 14:46:03


--------------------
Mój blog - o wszystkim i niczym ale zazwyczaj związane z informatyką! ;-)
Githube

Usługi spawalnicze i monterskie | Park linowy Lublin i Okunince
Go to the top of the page
+Quote Post
Pilsener
post
Post #4





Grupa: Zarejestrowani
Postów: 1 590
Pomógł: 185
Dołączył: 19.04.2006
Skąd: Gdańsk

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


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.
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 Aktualny czas: 19.08.2025 - 07:39