Jump to content

kalusn

New Members
  • Posts

    2
  • Joined

  • Last visited

    Never

Profile Information

  • Gender
    Not Telling

kalusn's Achievements

Newbie

Newbie (1/5)

0

Reputation

  1. Ok. I've passed it explicitly with the Zend_Registry::set(Zend_Navigation, $navigation); line, but my question is then, why does it have to be passed explicitly, when it should be in the registry automatically? I've learned what I know about Zend mostly from trial and error through the reference guide - there might be some big basics I don't know. If you know any good reads, tell me.
  2. I have a problem getting breadcrumbs to work properly in Zend Framework. I followed the zendcast guide on http://www.zendcasts.com/zend_navigation-dynamically-creating-a-menu-a-sitemap-and-breadcrumbs/2009/06/ in order to have a menu, sitemap and breadcrumbs generated from an .xml file. My pages are routed by the sub route, which has the value /sub/:page/. It refers to the contentAction of the IndexController. When i run it on my localhost server, it returns an error: "Fatal error: Call to undefined method stdClass::setClass() in /var/www/mywebapp/application/controllers/IndexController.php on line 23" The error signals that the problem is with the $activeNav object, and thus the $this->view->navigation()->findByUri($uri);. It doesn't help if i change it to findByLabel('forside'); (which is a label used in the navigation.xml file). However, I found a comment on that told me to add Zend_Registry::set(Zend_Navigation, $navigation); after the construction of the Zend_Navigation object in the Bootstrap. Now it works! and i'm supposed to be happy, but I still don't understand what it does. Can anyone explain to me why I have to use the Zend_Registry::set(Zend_Navigation, $navigation); command. Is it because of my custom routes? I don't have a problem anymore, but I'm very curious as to how this thing work. An explanation will be greatly appreciated. Thank you. IndexController: public function contentAction() { /* Setting the uri to be used by breadcrumbs*/ $uri = $this->_request->getPathInfo(); $activeNav = $this->view->navigation()->findByUri($uri); $activeNav->active = true; $activeNav->setClass(”active”); } Bootstrap.php protected function _initNavigation() { $this->bootstrap('layout'); $layout = $this->getResource('layout'); $view = $layout->getView(); $config = new Zend_Config_Xml(APPLICATION_PATH . '/configs/navigation.xml', 'nav'); $navigation = new Zend_Navigation($config); Zend_Registry::set(Zend_Navigation, $navigation); // WHAT DOES THIS DOOOOOO?!??!?!?!? $view->navigation($navigation); } navigation.xml <?xml version="1.0" encoding="UTF-8"?> <config> <nav> <home> <label>Introduction</label> <uri>/</uri> <pages> <forside> <label>forside</label> <uri>/sub/forside</uri> </forside> <produkter> <label>produkter</label> <uri>/sub/produkter</uri> </produkter> <kayloos> <label>kayloos</label> <uri>/sub/kayloos</uri> </kayloos> <kontakt> <label>kontakt</label> <uri>/sub/kontakt</uri> </kontakt> </pages> </home> </nav> </config> routes.ini: routes.sub.type = "Zend_Controller_Router_Route" routes.sub.route = "sub/:page/*" routes.sub.defaults.controller = "index" routes.sub.defaults.action = "content" Layout script: <div id="breadcrumbs"> <?= $this->navigation()->breadcrumbs()->setMinDepth(0) ->setLinkLast(true) ->setSeparator(' : ');?> </div>
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.