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