带有REQUEST_URI的动态菜单适用于'/'根目录,但不适用于'/index.php'



下面的代码所做的是检查数组中的所有导航项,从中生成一个html列表,然后检查URI匹配项,以知道哪个菜单项应该显示为活动菜单项。

一切正常。但有一件事。

当我在根domain.com上时,菜单中的Home项目显示为活动状态。但当我转到/index.php时,应该会发生同样的事情,但事实并非如此,我希望它们都能工作。

我不太确定在哪里或如何在代码中实现它。

PHP

<?php
$GLOBALS['config'] = array(
    'navigation' => array(
        'Home' => '/', //this part here
        'Sign up' => '/signup.php',
        'Login' => '/login.php'
    )
);
class Navigation {
    public static function get() {
        $URI = $_SERVER['REQUEST_URI'];
        $navArr = Config::get('navigation');
        $navigation = '<ul id="nav">' . "n";
        foreach($navArr as $name => $path) {
            $navigation .= '    <li' . (($URI == $path) ? ' class="active"' : false) . '><a href="' . $path . '">' . $name . '</a></li>' . "n";
        }
        $navigation .= '</ul>';
        return $navigation;
    }
}
?>

index.php不在导航数组中,这就是为什么。

添加一个条目,如:'index'=>'/index.php'

这是一个问题,因为你不能像实现那样将两个页面分配给同一个密钥

或:在ur htaccess上进行重定向,因此/和index.php是相同的

像这样的东西:htaccess将index.php重定向到根目录(包括子域)


和第三个选项,使数组与索引和字段导航和页面:

'navigation' => array(
    0 => array('nav' => 'Home',
                'page' => '/'),
//and so on
)

我肯定会去htaccess

PHP

<?php
$GLOBALS['config'] = array(
    'navigation' => array(
        'Home'     => array('/', '/index.php'),
        'Sign up'  => array('/signup', '/signup.php'),
        'Log in'   => array('/login', '/login.php')
    )
);
class Navigation {
    public static function get() {
        $URI = $_SERVER['REQUEST_URI'];
        $navArr = Config::get('navigation');
        $navigation = '<ul id="nav">' . "n";
        foreach($navArr as $name => $path) {
            $navigation .= '    <li' . ((in_array($URI, $path)) ? ' class="active"' : false) . '><a href="' . $path[1] . '">' . $name . '</a></li>' . "n";
        }
        $navigation .= '</ul>';
        return $navigation;
    }
}
?>

最新更新