以下代码的作用是检查数组中的所有导航项,制作一个html列表,然后检查URI
匹配项以了解哪个菜单项应显示为活动状态。< / p>
一切都按预期运作。但有一件事。
当我在根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;
}
}
?>
答案 0 :(得分:0)
index.php不在导航数组中,这就是原因。
添加如下条目: &#39;指数&#39; =&GT; &#39; /index.php'
这是一个问题因为你不能按照你实现它的方式将2个页面分配给同一个键
或: 在你的htacess上进行重定向所以/和index.php是相同的
这样的事情: htaccess redirect index.php to root (including subdomains)
和第三个选项,使用索引和字段创建数组navitem和page:
'navigation' => array( 0 => array('nav' => 'Home', 'page' => '/'), //and so on )
我绝对会去htaccess
答案 1 :(得分:0)
<强> 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;
}
}
?>