Zend Framework Source Code Snippets

Zend_Navigation_Page_Mvc isActive()

Bookmark and Share
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 JurJean
1 year ago
Edited:
JurJean JurJean
1 year ago
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)

History

r118

Altered description

JurJean JurJean
1 year ago
diff
r117

Initial Release

JurJean JurJean
1 year ago