Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [ZF] Pobranie parametrów w Bootstrapie
Sajrox
post 22.08.2009, 22:00:58
Post #1





Grupa: Zarejestrowani
Postów: 254
Pomógł: 7
Dołączył: 9.10.2007
Skąd: Poznań

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


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


Go to the top of the page
+Quote Post
seth-kk
post 22.08.2009, 22:13:13
Post #2





Grupa: Zarejestrowani
Postów: 444
Pomógł: 79
Dołączył: 26.05.2009

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


Uzyj Zend_Navigation + view helpery
bootstrap nie jest miejscem do analizy parametrow - router jeszcze nie zanalizowal URLa - lepszym miejscem jest routeShutdown() w pluginie


--------------------
Go to the top of the page
+Quote Post
Sajrox
post 23.08.2009, 12:39:12
Post #3





Grupa: Zarejestrowani
Postów: 254
Pomógł: 7
Dołączył: 9.10.2007
Skąd: Poznań

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


Ś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 !

Go to the top of the page
+Quote Post
seth-kk
post 23.08.2009, 12:55:00
Post #4





Grupa: Zarejestrowani
Postów: 444
Pomógł: 79
Dołączył: 26.05.2009

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


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)


--------------------
Go to the top of the page
+Quote Post
Sajrox
post 23.08.2009, 13:07:49
Post #5





Grupa: Zarejestrowani
Postów: 254
Pomógł: 7
Dołączył: 9.10.2007
Skąd: Poznań

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


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ś ?
Go to the top of the page
+Quote Post
seth-kk
post 23.08.2009, 13:21:10
Post #6





Grupa: Zarejestrowani
Postów: 444
Pomógł: 79
Dołączył: 26.05.2009

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


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


--------------------
Go to the top of the page
+Quote Post
Sajrox
post 23.08.2009, 15:54:05
Post #7





Grupa: Zarejestrowani
Postów: 254
Pomógł: 7
Dołączył: 9.10.2007
Skąd: Poznań

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


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 ?

Go to the top of the page
+Quote Post
seth-kk
post 23.08.2009, 16:09:13
Post #8





Grupa: Zarejestrowani
Postów: 444
Pomógł: 79
Dołączył: 26.05.2009

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


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


--------------------
Go to the top of the page
+Quote Post
Sajrox
post 23.08.2009, 17:40:37
Post #9





Grupa: Zarejestrowani
Postów: 254
Pomógł: 7
Dołączył: 9.10.2007
Skąd: Poznań

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


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 :/


Go to the top of the page
+Quote Post
seth-kk
post 23.08.2009, 18:03:52
Post #10





Grupa: Zarejestrowani
Postów: 444
Pomógł: 79
Dołączył: 26.05.2009

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


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


--------------------
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: 25.06.2025 - 09:40