我使用这样的分页系统:
<?php
$p = $_GET['p'];
switch($p)
{
case "start":
$p = "pages/start.php";
$currentPageId = 1;
break;
case "customers":
$p = "pages/customers.php";
$currentPageId = 2;
break;
default:
$p = "pages/start.php";
$currentPageId = 1;
break;
}
?>
我想将css class="active"
设置为我正在打开的页面的菜单项。
如果我打印<li>
这样的项目,它会起作用:
<li><a href="?p=start" <?php if ($currentPageId == 1) {echo "class='active'";}else {} ?>>Start</a></li>
但我想用三元运算符代替。我尝试了这段代码,但它不起作用:
<li><a href="?p=start" <?php ($currentPageId == '1') ? 'class="active"' : '' ?>>Startsida</a></li>
知道为什么吗?
修改
所以问题是我错过了echo
。现在让我稍微提出一下问题......
我需要将整个<ul>
封装在<?php ?>
标记内。所以我想要的是这样的:
echo "<div id='nav'>";
echo "<ul>";
echo "<li><a href='?p=start' /* ternary operator to match if the page I'm on is equal to $currentPageId as defined in the paging system (above), if so set class='active' else do nothing*/>Start</a></li>;
echo "<li><a href='?p=customers' /* ternary operator to match if the page I'm on is equal to $currentPageId as defined in the paging system (above), if so set class='active' else do nothing*/>Customers</a></li>;
echo "</ul>";
echo "</div>";
我需要这样做,因为我会根据if
语句显示链接..“如果用户是管理员显示此链接,否则不要”......任何人都有解决方案?
答案 0 :(得分:9)
你错过了回音:
<li><a href="?p=start" <?php echo (($currentPageId == '1') ? 'class="active"' : '') ?>>Startsida</a></li>
这应该可以解决问题。
解决第二个问题:
<?php
if($something == true) {
echo "<div id='nav'>"."\n<br>".
"<ul>"."\n<br>".
'<li><a href="?p=start"'. (($currentPageId == '1') ? 'class="active"' : '') .'>Startsida</a></li>'."\n<br>".
'<li><a href="?p=customers" '. (($currentPageId == '1') ? 'class="active"' : '') .' >Customers</a></li>'."\n<br>".
"</ul>"."\n<br>".
"</div>"."\n<br>";
}
?>
答案 1 :(得分:0)
正如其他人所指出的,你错过了回声。我还想指出,在这种情况下你甚至不需要三元运算符,因为你在其他情况下没有做任何事情:
<li><a href="?p=start" <?php if ($currentPageId == '1') echo 'class="active"'; ?>>Startsida</a></li>