获得当前访问的MVC

 /**
     * 获得当前访问的MVC
     * @param Zend_Controller_Front $ctlFront
     * @return array(module, controller, action)
     * 
     * @example
     * list($module, $controller, $action) = getMVC();
     */
    public static function getMVC($ctlFront = null) {
        if ($ctlFront == null) {
            $ctlFront = Zend_Controller_Front::getInstance();
        }
        $request = $ctlFront->getRequest();
        $requestURI = $request->getRequestUri();
        $qryPos = strpos($requestURI, '?');
        if ($qryPos>0) {
            $requestURI = substr($requestURI, 0, $qryPos);
        }
        $requestURI = str_replace('\\', '/', $requestURI);
        //pre-process danguress url req
        $requestURI = preg_replace("|\/+|s", '/', $requestURI);
        $requestURI = trim($requestURI, '/');
        list($module, $controller, $action) = explode('/', $requestURI);
        if (empty($module)) {
            $module = $request->getModuleName();
        }
        if (empty($controller)) {
            $controller = $request->getControllerName();
        }
        if (empty($action)) {
            $action = $request->getActionName();
        }
        
        if (empty($module)) {
            $module = $ctlFront->getDefaultModule();
        }
        if (empty($controller)) {
            $controller = $ctlFront->getDefaultControllerName();
        }
        if (empty($action)) {
            $action = $ctlFront->getDefaultAction();
        }
        
        return array($module, $controller, $action);
    }

 

/**
     * 设置高亮的菜单module,controller,和action
     * 可以只改变其中一个,如:如果只改变controller,则传递controller即可
     * @param unknown_type $m
     * @param unknown_type $c
     * @param unknown_type $a
     * 设置到view中, implode('.', array($m, $c, $a));
     * @return string
     */
    protected function _highlight($m='', $c='', $a = '') {
        list($autom, $autoc, $autoa) = getMVC();
        if ($m == '' && $c == '' && $a== '') {
            $m = $autom;
            $c = $autoc;
            $a = $autoa;
        } else {
            if ($m == '') {
                $m = $autom;
            }
            if ($c == '') {
                $c = $autoc;
            }
            if ($a == '') {
                $a = $autoa;
            }
        }
        $this->view->highlight = implode('.', array($m, $c, $a));
    }

 

<div id="SubMenu">
<?php 
    $arrNav = array(
            ''=>array(
                        'subnav'=>array(
                                ''=>array('url'=>'/default/site/',
                                                 'highlight'=>array(
                                                     'default.site.index',
                                                    'default.site.add'
                                                    )
                                            ),                                            ),
                            )
                        ),
        );
        $highlight = $this->highlight;
        foreach ($arrNav as $key=>$oneRow) {
            $arrSubNav = $oneRow['subnav'];
            $lihtml = '';
            $currentclass = '';
            $subclass = '';
            foreach ($arrSubNav as $subtitle=>$arrSubNavItem) {
                if ($arrSubNavItem['highlight']==$highlight) {
                    $currentclass = 'current';
                    $subclass = 'current';
                } else {
                    $subclass = '';
                }
                $lihtml .= '<li class="'.$subclass.'"><a href="'.$arrSubNavItem['url'].'">'.$subtitle.'</a></li>';
            }
?>
            <ul class="menu-sub <?php echo $currentclass;?>">
                <?php echo $lihtml;?>
            </ul>
<?php 
        }
?>
</div>
<script type="text/javascript">
    $('.menu-title').click(function(){
        $(this).next('ul').toggle();
        
    });
</script>
                

 

posted @ 2012-06-22 12:39  绒花雪冷  阅读(236)  评论(0编辑  收藏  举报