Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [ZendFramework] Zend_Navigation
CzarnyGsm
post 15.09.2011, 19:11:30
Post #1





Grupa: Zarejestrowani
Postów: 84
Pomógł: 2
Dołączył: 16.04.2007

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


Witam,
Znalazłem w internecie ciekawy tutorial odnośnie Zend_Navigaton -> http://www.zendcasts.com/zend_navigation-d...crumbs/2009/06/ .
Z tego tytułu też mam pytania, czy aby zaprezentowane kod na tej stronie jest aktualny (artykuł pochodzi z 2009 roku)? Chciałbym wiedzieć, aby później nie błądzić. Drugie z moich pytań to z czego mogę skorzystać, aby odnośniki nie były układane po nazwie kontrolera, akcji i samemu je 'składać' np. aby adres http://localhost/uzytkownicy/rejestracja mógł wyświetlać się pod adresem http://localhost/rejestracja. Z góry dziękuję za pomoc.

W pliku application/layouts/scripts/layout.phtml
  1. [..]<?php echo $this->navigation()->menu(); ?>[..]


W pliku Boostrap.php umieszczam:
  1. protected function _initNavigation()
  2. {
  3. $this->bootstrap('view');
  4. $view = $this->getResource('view');
  5. $config = new Zend_Config_Xml(APPLICATION_PATH . '/configs/navigation.xml', 'nav');
  6. $navigation = new Zend_Navigation($config);
  7. $view->navigation($navigation);
  8. }


Plik XML :
application/configs/navigation.xml
  1. <?xml version="1.0"?>
  2. <zend-config xmlns:zf="http://framework.zend.com/xml/zend-config-xml/1.0/">
  3. <nav>
  4. <home>
  5. <label>Home</label>
  6. <uri>/</uri>
  7.  
  8. <pages>
  9. <lista-uzytkownikow>
  10. <label>Lista uzytkownikow</label>
  11. <uri>/uzytkownicy/lista-uzytkownikow</uri>
  12. </lista-uzytkownikow>
  13. <rejestracja>
  14. <label>Rejestracja</label>
  15. <uri>/uzytkownicy/rejestracja</uri>
  16. </rejestracja>
  17. </pages>
  18.  
  19. </home>
  20. </nav>
  21. </zend-config>
Go to the top of the page
+Quote Post
grOm
post 16.09.2011, 08:54:57
Post #2





Grupa: Zarejestrowani
Postów: 57
Pomógł: 4
Dołączył: 6.10.2005

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


Hej,
musisz inaczej napisac ten plik xml umieszczac cos w stylu :
  1. <home>
  2. <label>Home</label>
  3. <module>default</module>
  4. <controller>index</controller>
  5. <action>index</action>
  6. <route>default</route>
  7. </home>
  8. <shop>
  9. <label>Shop</label>
  10. <module>shop</module>
  11. <controller>index</controller>
  12. <action>index</action>
  13. <route>default</route>
  14. </shop>


czyli zamiast <uri> podawac kontroler i akcje, a jak chcesz 'skladac po swojemu' musisz ustawiać routery czyli dajmy na to :
  1. resources.router.routes.homepage.route = "homepage.html"
  2. resources.router.routes.homepage.defaults.module = "default"
  3. resources.router.routes.homepage.defaults.controller = "index"
  4. resources.router.routes.homepage.defaults.action = "index"

w apllication.ini, a w xmlu ustawiasz router na "homepage" czyli
  1. <home>
  2. <label>Home</label>
  3. <module>default</module>
  4. <controller>index</controller>
  5. <action>index</action>
  6. <route>homepage</route>
  7. </home>

wtedy Ci się wygeneruje link homepage.html


--------------------
Zend Certified Engineer
Go to the top of the page
+Quote Post
CzarnyGsm
post 20.09.2011, 20:40:16
Post #3





Grupa: Zarejestrowani
Postów: 84
Pomógł: 2
Dołączył: 16.04.2007

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


Dziękuje bardzo za rozwiązanie. Działa jak należy. Już dałem plusik:) Mam jeszcze pytanie o te trasy. Do pliku application.ini dodałem dwie trasy: (od razu tutaj pytanie, czy nie da się tego inaczej zrobić bo przy dużej stronie sporo tych tras wyjdzie)
Kod
[..]
resources.router.routes.rejestracja.route = "rejestracja.html"
resources.router.routes.rejestracja.defaults.module = "default"
resources.router.routes.rejestracja.defaults.controller = "uzytkownicy"
resources.router.routes.rejestracja.defaults.action = "rejestracja"
resources.router.routes.lista.route = "lista.html"
resources.router.routes.lista.defaults.module = "default"
resources.router.routes.lista.defaults.controller = "uzytkownicy"
resources.router.routes.lista.defaults.action = "listaUzytkownikow"
[..]

Do pliku .xml dodałem zaś
  1. [..]
  2. <home>
  3. <label>Home</label>
  4. <uri>/</uri>
  5.  
  6. <pages>
  7. <rejestracja>
  8. <label>Rejestracja</label>
  9. <controller>uzytkownicy</controller>
  10. <action>rejestracja</action>
  11. <route>rejestracja</route>
  12. </rejestracja>
  13. <lista>
  14. <label>Lista użytkowników</label>
  15. <controller>uzytkownicy</controller>
  16. <action>listaUzytkownikow</action>
  17. <route>lista</route>
  18. </lista>
  19. </pages>
  20.  
  21. </home>
  22. [..]


Odnośnik rejestracja.html działa jak należy, ale z kolei na stronie lista.html wyświetla mi komunikat, że akcja "listauzytkownikow" nie istnieje. Może problem jest w tym, że nazwa akcji jest dwuczłonowa tzn. składającą się z dwóch słów i w nazwie listaUzytkownikow zamienia wielką literę U na małą?
Informacja o błędzie:
Kod
Exception information:

Message: Action "listauzytkownikow" does not exist and was not trapped in __call()
Stack trace:

#0 C:\xampp\php\PEAR\Zend\Controller\Action.php(518): Zend_Controller_Action->__call('listauzytkownik...', Array)
#1 C:\xampp\php\PEAR\Zend\Controller\Dispatcher\Standard.php(295): Zend_Controller_Action->dispatch('listauzytkownik...')
#2 C:\xampp\php\PEAR\Zend\Controller\Front.php(954): Zend_Controller_Dispatcher_Standard->dispatch(Object(Zend_Controller_Request_Http), Object(Zend_Controller_Response_Http))
#3 C:\xampp\php\PEAR\Zend\Application\Bootstrap\Bootstrap.php(97): Zend_Controller_Front->dispatch()
#4 C:\xampp\php\PEAR\Zend\Application.php(366): Zend_Application_Bootstrap_Bootstrap->run()
#5 C:\xampp\htdocs\SiteZend\public\index.php(26): Zend_Application->run()
#6 {main}  

Request Parameters:

array (
  'module' => 'default',
  'controller' => 'uzytkownicy',
  'action' => 'listaUzytkownikow',
)



---EDIT---
Wydaje mi się, że jest to błąd Zend'a, w kontrolerze jak zamienię nazwę akcji na wszystkie małe litery to działa prawidłowo.

Ten post edytował CzarnyGsm 21.09.2011, 17:33:43
Go to the top of the page
+Quote Post
zend
post 24.09.2011, 09:18:55
Post #4





Grupa: Zarejestrowani
Postów: 580
Pomógł: 85
Dołączył: 25.03.2010
Skąd: Skrzyszów :)

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


1)It's not a bug, it's a feature!
resources.router.routes.lista.defaults.action = "lista-uzytkownikow"
2)Jeśli będziesz w stanie wymyśleć bardziej ogólne trasy to będzie ich mniej wink.gif
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 - 16:59