Jestem w trakcie tworzenia aplikacji w Zendzie i napotkałem się na wkurzający problem (ZF 1.11.1). Otóż chcę zrobić aktywny link, czyli gdy podświetlenie jakimś tam stylem danej (aktualnie wybranej) opcji w menu. Problem może być o tyle trudny, że w aplikacji używam Routera i pojawia się po wybraniu opcji start (domyślny router default), to wszystkie linki oznacza jako aktywne.
Plik bootstrap:
<?php class Bootstrap extends Zend_Application_Bootstrap_Bootstrap { protected function _initViewHelper() { $this->bootstrap('layout'); $layout = $this->getResource('layout'); $view = $layout->getView(); $view->doctype('XHTML1_STRICT'); $configRoute = new Zend_Config_Xml(APPLICATION_PATH . '/configs/route.xml','main'); $router = Zend_Controller_Front::getInstance()->getRouter(); $router->addConfig($configRoute); $configNav = new Zend_Config_Xml(APPLICATION_PATH . '/configs/navigation.xml','main'); $view->navigation(new Zend_Navigation($configNav)); } }
plik route.xml:
<?xml version="1.0" encoding="UTF-8"?> <root> <main> <oneNews type="Zend_Controller_Router_Route_Regex"> <route>news/(\d+),[a-zA-Z_]+</route> <defaults controller="news" action="show" /> <map id="1"/> </oneNews> <news type="Zend_Controller_Router_Route"> <route>news/:page</route> <defaults controller="news" action="index" page=""/> <reqs page="(\d)+" /> </news> <imprezy type="Zend_Controller_Router_Route"> <route>imprezy/:page</route> <defaults controller="imprezy" action="index" page=""/> <reqs page="(\d)+" /> </imprezy> <kontakt type="Zend_Controller_Router_Route_Static"> <route>kontakt</route> <defaults controller="index" action="kontakt" /> </kontakt> <reklama type="Zend_Controller_Router_Route_Static"> <route>reklama</route> <defaults controller="index" action="reklama" /> </reklama> <oneGaleria type="Zend_Controller_Router_Route_Regex"> <route>[a-zA-Z_]+/(\d+),(\d){2}.(\d){2}.(\d){4}</route> <defaults controller="galeria" action="show" /> <map id="1" /> </oneGaleria> <galeria type="Zend_Controller_Router_Route"> <route>galeria/:page</route> <defaults controller="galeria" action="index" page=""/> </galeria> </main> </root>
oraz plik navigation.xml :
<?xml version="1.0" encoding="UTF-8"?> <root> <main> <start> <label>START</label> <route>default</route> </start> <news> <label>NEWS</label> <route>news</route> </news> <imprezy> <label>IMPREZY</label> <route>imprezy</route> </imprezy> <galeria> <label>GALERIA</label> <route>galeria</route> </galeria> <reklama> <label>REKLAMA</label> <route>reklama</route> </reklama> <kontakt> <label>KONTAKT</label> <route>kontakt</route> </kontakt> </main> </root>
dodatkowo do wyświetlania menu używam Partiala:
I teraz cała zabawa odpalam linka START i otrzymuje taki kod:
</ul>
Dobra klikam powiedzmy galeria i otrzymuje:
</ul>
Czyli całkiem kosmos ! I mam pytanie czy ktoś pomorze mi wytłumaczyć takie dziwne zachowanie ? Dodam, że link są prawidłowo generowane. Metoda isActive() sorawdza czy wybrana opcja menu jest aktywna, więc co jest nie tak ?
