Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
带有请求URI的动态菜单适用于'/';根,但不是'/php';_Php_Html_Oop - Fatal编程技术网

带有请求URI的动态菜单适用于'/';根,但不是'/php';

带有请求URI的动态菜单适用于'/';根,但不是'/php';,php,html,oop,Php,Html,Oop,下面的代码所做的是检查数组中的所有导航项,从中生成一个html列表,然后检查URI匹配项以知道哪个菜单项应显示为活动 一切正常。但有一件事 当我在根目录domain.com上时,菜单中的Home项显示为活动状态。但是当我转到/index.php时,应该会发生同样的事情,但我不希望它们都起作用 我不太确定在我的代码中在哪里或者如何实现它 PHP <?php $GLOBALS['config'] = array( 'navigation' => array( 'H

下面的代码所做的是检查数组中的所有导航项,从中生成一个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;
    }
}
?>
<?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;
    }
}
?>

index.php不在导航数组中,这就是原因

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

这是一个问题,因为您无法按实现方式将两个页面分配给同一个键

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

大概是这样的:


第三个选项是使用索引和字段生成数组navitem和page:

我肯定会去htaccess

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;
    }
}
?>
<?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;
    }
}
?>

如果我添加一个条目,我的菜单中基本上会有两个项目指向同一页面。我不想那样。那是因为你是如何实施的。去吧,那就去吧