
Zend Framework tvorba pluginů a menu
28. Ledna 2010
Dnes bych se chtěl podívat na tvorbu menu pro vaši aplikaci. Způsobů je mnoho a každý se hodí pro jinou situaci. Řekněme že potřebujete statické menu ale pro každý modul nebo controller jiné. V tomto tutoriálu využijeme pluginů a třídy Zend_Navigation. Pokud hledáte způsob, jak vhodně vyřešit menu pro vaši aplikaci, nebo se chcete seznámit s třídou Zend_Navigation, tak je tento článek určen právě vám.Nejdříve je potřeba zaregistrovat plugin, náš plugin nepotřebuje žádné parametry pro konstruktor, tudíž nám stačí plugin zaregistrovat přes konfigurační soubor(pokud máte pluginy registrované v bootstrap.php, tak ho samozřejmě můžete zaregistrovat tam).
resources.frontController.plugins.menu = "XXXXX_Plugin_Menu"
nebo tedy v boostrapu
// Ukazka funkce pro bootstrap na registrovani pluginu protected function _initFront() { //Slozka pro pluginy /application/plugins/ $front = Zend_Controller_Front::getInstance(); $front->registerPlugin(new XXXX_Plugin_Menu()); return $front; }
Musíme se rozhodnout, pro nějaký modul, controller, nebo akci chceme menu změnit. Pro vybrané moduly, controllery a akce můžeme změnit i celý layout.
if(getControllerName() == "produkty") { $structure = array(array( 'label' => "Ceny prodůktů", 'controller' => 'products', 'action' => 'prizes', 'module' => 'default', ), array( 'label' => 'Nejnovější produkty', 'controller' => 'products', 'action' => 'latest', 'module' => 'default' ), ); } if ($request->getModuleName () == "administrace") { if($request->getControllerName() == "login") { $layout = Zend_Layout::getMvcInstance (); $layout->setLayout( "login" ); return ; } $layout = Zend_Layout::getMvcInstance (); $layout->setLayout( "l" ); if($request->getControllerName() == "users") { $structure = array(array( 'label' => "Nový uživatel", 'controller' => 'users', 'action' => 'new', 'module' => 'administrace', ), array( 'label' => 'Seznam uživatelů', 'controller' => 'users', 'action' => 'list', 'module' => 'administrace' ), ); } } if(isset($structure)) { $cont = new Zend_Navigation ($structure); $layout->getView()->navigation($cont); $uri = $this->_request->getPathInfo (); $activeNav = $layout->getView ()->navigation()->findByUri($uri); $activeNav->active = true; $activeNav->class = "active"; } } }
Nadefinujeme pole obsahující atributy odkazů a poté vytvoříme instanci třídy Zend_Navigation, které předáme jako parametr strukturu menu. Nakonec zjistíme aktivní položku a nastavíme jí příslušnou css třídu. A teď již stačí obsah jen vygenerovat ve vašem layout scriptu.
echo $this->navigation()->breadcrumbs(); // a nebo klasické menu echo $this->navigation()->menu(); ?>
A to je celé. To byl celý příklad toho jak napsat jednoduchý plugin a jedna z možností, jak vytvořit menu pro svou aplikaci
Ohodnoť článek
Ohodnoťte článek.
|
- Zobrazeno 1424x
- 2 komentáře
- Přidat na del.icio.us
- Sdílet na Facebooku









Přidat příspěvěk