/**
* 获得当前访问的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>