1

在 bootstrap 3 中,我们将此类<li>设置为active,以便在导航栏上突出显示当前页面

<li class="active">
     <a href="linkaddress.html">Link</a>
</li>

问题是当您通过包含includes/header.php;在所有页面上包含菜单时。我不知道如何在 the 上组合一个 switch 语句$actual_link并带回某种调用以在正确的位置插入活动的类。这是我迄今为止的尝试,我老实说卡住了,因为我觉得有更好的方法。我怎样才能用这个开关li来上课active

$actual_link = "http://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]";
$HTTPHost = $_SERVER[HTTP_HOST];
switch($actual_link)
{
case "http://{$HTTPHost}/index.php" || 
    "http://{$_SERVER[HTTP_HOST]}/admin.php?edit_home":

//setToActive
    break;
case "http://{$HTTPHost}/warrants.php" || 
    "http://{$_SERVER[HTTP_HOST]}/admin.php?edit_warrants":
 //setToActive     
    break;
case "http://{$HTTPHost}/faq.php" || 
    "http://{$_SERVER[HTTP_HOST]}/admin.php?edit_faq":
 //setToActive 
    break;
case "http://{$HTTPHost}/aboutus.php" || 
    "http://{$_SERVER[HTTP_HOST]}/admin.php?edit_aboutus":
  //setToActive  
    break;
}

?>

4

2 回答 2

0

在你的页面中包含 header 之前设置一个变量来指示当前页面。例如在index页面中:

$active = 'index';
include('includes/header.php');

现在在您header.php创建链接时使用类似的东西

<?php global $active ?>
<li <?php if( isset($active) && $active == 'index') echo 'class="active"'; ?>>
     <a href="index.php">Index</a>
</li>
于 2013-09-01T08:54:07.920 回答
0

您不能在这样的 case 语句中指定多个表达式

case "http://{$HTTPHost}/index.php" || 
    "http://{$_SERVER[HTTP_HOST]}/admin.php?edit_home":

上面的表达式计算为true

使用以下语法

case "http://{$HTTPHost}/index.php":
case "http://{$_SERVER[HTTP_HOST]}/admin.php?edit_home":
     //statements 
     break;
于 2013-09-01T08:56:47.583 回答