Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [ZF] Pobranie parametrów w Bootstrapie
Forum PHP.pl > Forum > PHP > Frameworki
Sajrox
Witam,

Mam pewien dylemat. Buduje panel admin. w ZF i chciałbym aby w pliku layout.phtml który jest ładowany w Bootstrap.php, była możliwość wyświetlenia nazwy parametrów (akcji, moduły itd..). Potrzebuje to do tego aby określić który kontroler jest obecnie uruchomiony aby zaznaczyć w nawigacji to, przez zmianę koloru linka obecnie aktywnego.

Plik Bootstrap.php
  1. class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
  2. {
  3. protected function _initAutoload()
  4. {
  5. $autoloader = new Zend_Application_Module_Autoloader(array(
  6. 'namespace' => '',
  7. 'basePath' => APPLICATION_PATH,
  8. ));
  9.  
  10. return $autoloader;
  11. }
  12.  
  13. protected function _initDoctype()
  14. {
  15. // Załadowanie szblonu
  16. $this->bootstrap('layout');
  17. $layout = $this->getResource('layout');
  18. $view = $layout->getView();
  19.  
  20. // Załadowanie ustawień panelu administracyjnego
  21. $navigation = new Zend_Config_Ini('_admin.ini', 'navigation');
  22. $view->navigation = $navigation;
  23.  
  24. // Załadowanie patametrów
  25. // $params = $this->getRequest()->getParams(); // <- TO NIE DZIAŁA
  26.  
  27.  
  28. // Ustawienie strony
  29. $view->doctype('XHTML1_STRICT');
  30. $view->headMeta()->appendHttpEquiv('Content-Type', 'text/html;charset=utf-8');
  31. $view->headTitle()->setSeparator(' - ');
  32. $view->headTitle('Panel administracyjny');
  33. }
  34. }


Jak mogę to rozwiązać ? Gdy pobieram parametry w Kontrolerze (IndexController.php) to wszystko jest ok ale nie wyświetlają się w pliku layout.phtml. Zapewne dlatego że plik ten jest łądowany przed Kontrolerem.

Także mile widziane sugestie co do powyższego kodu winksmiley.jpg


seth-kk
Uzyj Zend_Navigation + view helpery
bootstrap nie jest miejscem do analizy parametrow - router jeszcze nie zanalizowal URLa - lepszym miejscem jest routeShutdown() w pluginie
Sajrox
Świetna sprawa z tym Zend_Navigation smile.gif Jest tylko jeden problem dotyczący aktywnej strony.
Czy jest mozliwość aby w momencie gdy jest aktywna dana podstrona (w przypadku gdy struktura jest drzewiasta 2 poziomowa) to także była aktywna strona nadrzędna rodzica np:

mam takie menu:

Produkty
----- Dodaj
----- Lista
---------- Lista1
---------- Lista2

W momencie klikne na Lista będzie ona aktywna jednak kategoria nadrzędna "Produkty" będzie miała wartość jako nieaktywna.
Trak samo jak klikne w "Lista2" to chciałbym aby aktywna była "Lista2", "Lista" oraz "Kategoria" a nie tylko "Lista2"

Co do Helperów to jeszcze do tego nie doszedłem winksmiley.jpg Może podasz jakiś przykład dla ułatwienia ?





Z góry dzięki !

seth-kk
to o czym piszesz to standardowe dzialanie ale musisz trzymac cala nawigacje w jednym obiekcie (jesli jest duza i dynamiczna to mozesz wypelniac tylko potrzebne galezie)
Sajrox
U mnie to wygląda tak:

Mam kontroler globalny po którym dziedziczą inne kontrolery i w nim metodę:
  1. public function navigation()
  2. {
  3. # Produkty
  4. # =====>
  5. $_page =
  6. 'label' => 'Produkty',
  7. 'action' => 'index',
  8. 'controller' => 'produkty',
  9. );
  10.  
  11. $_page['pages'] =
  12. 'label' => 'Dodaj produkt',
  13. 'action' => 'dodaj',
  14. 'controller' => $_page['controller']
  15. ),
  16. 'label' => 'Lista produktów',
  17. 'action' => 'index',
  18. 'controller' => $_page['controller']
  19. ),
  20. );
  21. $pages[] = $_page;
  22. # <=====
  23.  
  24. $container = new Zend_Navigation($pages);
  25. return $container;
  26. }


Wywołuję to
  1. $this->view->navigation = $this->navigation();


I w widoku już w pętli foreach i ifami wyświetlam i zaznaczam która strone jest aktywna.
Ale nie wiem jak zrobić taki efekt, aby wszystkie kategorie nadrzędne miałe zmienną "active" ustawioną na 1.
O ile w ogóle da się taki efekt uzyskać.

Oczywiście pomijajać to że mogę pobawić się ifami i sobie sam sprawdzić która kategoria nadrzędna jest aktywna.
MOżesz wkleić jakiś swój przykład jak Ty to rozwiązałeś ?
seth-kk
Uzyj helperow
w twoim przypadku problemem pewnie jest uzycie isActive() zamiast isActive(true)
u mnie jest to czesc znacznie wiekszej calosci i ostatnio wygladalo to mniejwiecej tak
  1. <!-- main menu -->
  2. <?= $this->navigation()->menu()->setUlClass('mainMenu')->setMinDepth(1)->setMaxDepth(1); ?>
  3.  
  4. <div id="pageContent" class="<?= $this->module; ?>">
  5. <!-- breadcrumbs -->
  6. <p class="naviBar">
  7. Jesteś w: <?= $this->navigation()->breadcrumbs()->setAcl(Zend_Registry::get('Zend_Acl'))->setRole('user')->setSeparator(' &raquo; '); ?>
  8. </p>
  9.  
  10. <!-- submenu -->
  11. <?= $this->navigation()->menu()->setAcl(Zend_Registry::get('Zend_Acl'))->setRole('user')->setUlClass('subMenu')->renderSubMenu(); ?>
  12.  
  13. <!-- module content -->
  14. <?= $this->layout()->content ?>
  15. </div>

To jest fragment nawigacji w layoucie, zeby dzialal poprawnie nawigacja rezyduje w rejestrze z etykieta Zend_Navigation
Sajrox
Właśnie w tym kłopot że za bardzo nie umiem korzystać z helperów sad.gif Na pewno jeszcze poczytam o tym, ale bardziej by było pomocne jakiś przykład.




Mogłbym Cie prosić o pokazanie tego helpera ?

seth-kk
Cytat(Sajrox @ 23.08.2009, 16:54:05 ) *
...Mogłbym Cie prosić o pokazanie tego helpera ?

To sa standardowe helpery - Zend_View_Helper_Navigaton, _Menu i _Breadcrumbs w moim przykladzie
Podstawa jest
  1. $this->navigation()->menu();

reszta to dodatkowe parametry/opcje
Sajrox
Po mału po mału coś zaczyna wychodzić. Polecam ten filmik:

http://www.zendcasts.com/zend_navigation-d...crumbs/2009/06/

Ale dlaczego ściezkę wyświetla mi tylko kiedy w pliku xml z nawigacją dodam znacznik <module>

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <data>
  3. <navigation>
  4. <index>
  5. <label>Strona główna</label>
  6. <controller>index</controller>
  7. <action>index</action>
  8. </index>
  9. <kategorie>
  10. <label>Kategorie</label>
  11. <controller>kategorie</controller>
  12. <action>index</action>
  13. <module>admin</module>
  14. <pages>
  15. <dodaj>
  16. <label>Dodaj kategorie</label>
  17. <controller>kategorie</controller>
  18. <action>dodaj</action>
  19. <module>admin</module>
  20. </dodaj>
  21. </pages>
  22. </kategorie>
  23. </navigation>
  24. </data>


Gdy usune wszedzie <module>... </module> to ściezka (breadCrumbs) przestaje się wyświetlac. Gdy mam znacznik module to generuje mi dziwny link dopisująć module/nazwa_modulu :/


seth-kk
zacznij od menu nie okruszkow!
okruszki wyswietlaja sie tylko jesli masz przynajmniej 2 wezly aktywne - a przynajmniej mi nie udalo mi sie wymusic czegos innego bez ingerencji w helpery
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.