Zend_Navigation_Page_Mvc isActive()
1 2 3 4 56 7 8 9 1011 12 13 14 1516 17 18 19 2021 22 23 24 2526 27 28 29 3031 32 33 34 3536 37 38 39 4041 42 43 44 4546 47 48 49 | <? class Mhwk_Navigation_Page_Mvc extends Zend_Navigation_Page_Mvc { public function isActive($recursive = false) { if (!$this->_active) { $front = Zend_Controller_Front::getInstance(); $router = $front->getRouter(); $request = $router->route($front->getRequest()); $reqParams = $request->getParams(); if (!array_key_exists('module', $reqParams)) { $reqParams['module'] = $front->getDefaultModule(); } $myParams = $this->_params; $route = $router->getRoute($this->_route); $routeDefaults = $route->getDefaults(); if (null !== $this->_module) { $myParams['module'] = $this->_module; } else { $myParams['module'] = $routeDefaults['module']; } if (null !== $this->_controller) { $myParams['controller'] = $this->_controller; } else { $myParams['controller'] = $routeDefaults['controller']; } if (null !== $this->_action) { $myParams['action'] = $this->_action; } else { $myParams['action'] = $routeDefaults['action']; } if (count(array_intersect_assoc($reqParams, $myParams)) == count($myParams)) { $this->_active = true; return true; } } return parent::isActive($recursive); } } |
Comments
You must login before commenting on a snippet. If you do not have an account, please register.
Snippet description
Use this method to let the isActive() method automatically detect if it is active or not.
Instead of getting the default module / controller / action the vars are coming from a request object.
This script is calling $router->route($front->getRequest()) to get a correct request object. If you don't use the actionStack helper, just call $front->getRequest();
Snippet details
- Created:
-
JurJean
- Edited:
-
JurJean
- Revision Id:
- 118
- Edit Message:
- Altered description
- ZF Version
- 1.8.3
- Tags:
- navigation page mvc route
- Comments:
- 0
- Views:
- 272
- Points:
- 0 (0 votes)