Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [ZendFramework]Zend_Navigation + Zend_Router problem
Forum PHP.pl > Forum > PHP > Frameworki
R4D3K
Witam wszystkich, ostatnio zacząłem używać Zend_Navigation. I posiadam następujący bootstrap:
  1. <?php
  2.  
  3. class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
  4. {
  5. protected function _initViewHelpers() {
  6. $this->bootstrap('layout');
  7. $layout = $this->getResource('layout');
  8. $view = $layout->getView();
  9. //init doctype
  10. $view->doctype('XHTML1_STRICT');
  11. //init Zend_Navigation
  12. $configNav = new Zend_Config_Xml(APPLICATION_PATH . '/configs/navigation.xml','main');
  13. $view->navigation(new Zend_Navigation($configNav));
  14. //init Zend_Router
  15. $configRoute = new Zend_Config_Xml(APPLICATION_PATH . '/configs/route.xml','route');
  16. $router = Zend_Controller_Front::getInstance()->getRouter();
  17. $router->addConfig($configRoute);
  18. }
  19.  
  20. }


Oraz pliki xml:

navigation.xml:
Kod
<?xml version="1.0" encoding="UTF-8"?>
<root>
  <main>
      <start>
          <label>START</label>
          <controller>index</controller>
          <action>start</action>
      </start>

      <imprezy>
          <label>IMPREZY</label>
          <controller>index</controller>
          <action>imprezy</action>
      </imprezy>

      <oferta>
          <label>OFERTA</label>
          <controller>index</controller>
          <action>oferta</action>
      </oferta>

      <galeria>
          <label>GALERIA</label>
          <controller>index</controller>
          <action>galeria</action>
      </galeria>

      <kontakt>
          <label>KONTAKT</label>
          <controller>index</controller>
          <action>kontakt</action>
      </kontakt>
  </main>
</root>


Oraz, route.xml:

Kod
<?xml version="1.0" encoding="UTF-8"?>
<root>
<main>
    <imprezy type="Zend_Controller_Router_Route_Static">
        <route>imprezy.html</route>
        <defaults>
            <controller>index</controller>
            <action>imprezy</action>
        </defaults>
    </imprezy>
    <oferta type="Zend_Controller_Router_Route_Static">
        <route>oferta.html</route>
        <defaults>
            <controller>index</controller>
            <action>oferta</action>
        </defaults>
    </oferta>
    <oferta type="Zend_Controller_Router_Route_Static">
        <route>oferta.html</route>
        <defaults>
            <controller>index</controller>
            <action>oferta</action>
        </defaults>
    </oferta>
    <kontakt type="Zend_Controller_Router_Route_Static">
        <route>kontakt.html</route>
        <defaults>
            <controller>index</controller>
            <action>kontakt</action>
        </defaults>
    </kontakt>
</main>
</root>


A problem jest generowanie linków przez Zend_Navigation, za chiny nie mogę znaleźć w dokumentacji oraz w necie w jaki sposób zmusić Zend_Navigation do generowania tras, które zdefiniowałem w route.xml. Czy jest jakiś sposób na zdefiniowanie np w navigation.xml nazwy trasy, która będzie używana ?
batman
Cytat
Czy jest jakiś sposób na zdefiniowanie np w navigation.xml nazwy trasy, która będzie używana
Tak. Z pomocą przyjdzie Zend_Navigation_Page_Mvc, a dokładniej parametr route. Zamiast kontrolera i akcji podajesz nazwę ścieżki.
R4D3K
Dzięki batman, poprawiłem swój plik routes.xml, jednak to zrodziło moje kolejne pytanie. W momencie gdy usunę tagi <controller> i <action> i wstwie <route> z nazwą ścieżki owszem jest gitara Zend_Navigation generuje mi menu z właściwym linkiem, ale co w przypadku gdy chce pozostać przy domyślnym routerze a tylko cześć linków niech korzysta z routerów ?

Kod
<?xml version="1.0" encoding="UTF-8"?>
<root>
  <main>
      <start>
          <label>START</label>
          <controller>index</controller>
      </start>

      <imprezy>
          <label>IMPREZY</label>
          <route>imprezy</route>
      </imprezy>

      <oferta>
          <label>OFERTA</label>
          <route>oferta</route>
      </oferta>

      <galeria>
          <label>GALERIA</label>
          <controller>index</controller>
          <action>galeria</action>
      </galeria>

      <kontakt>
          <label>KONTAKT</label>
          <route>kontakt</route>
      </kontakt>
  </main>
</root>


Co ciekawe odkrycie, że w momencie gdy wpisuje localhost linki są generowane poprawnie,natomiast po wejściu na stronę np oferta.html, opcja menu START prowadzi do strony oferta.html (tak samo się dzieje z działem galeria) proszę o pomoc.
batman
Tak na szybkiego, to jedyne co przychodzi mi do głowy to brak domyślnego routera, czyli takiego, który będzie przepisywał pierwszy człon adresu na kontroler, a drugi na akcję. Ale to tylko strzał na ślepo. Dopiero jutro będę mógł przysiąść z kodem.
R4D3K
Domyślny router jest i działa bo jak wpisze w URL: /controller/action to wszystko gra, z resztą nie usuwałem go tylko użyłem addConfig co powinno dodać te ścieżki do bieżącej, chyba, że się mylę (Używam ZF 1.10.8)

Przepraszam , że nowy post ale jakoś nie mogę znaleźć przycisku edytuj, problem rozwiązałem ! Problemem był kontroler zenda używał do generowanie menu aktywnej ścieżki route, dlatego nadpisywał mi inne pozycje w menu
batman
Cieszę się, że udało Ci się rozwiązać problem. Dopiero dzisiaj znalazłem chwilę, aby siąść do kodu.
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.