我在html中导航,其中嵌入了PHP代码,只有当user是管理员用户时,“ li”之一才必须显示。我已经设法通过检查$ is_admin变量来配置系统值,以识别用户是否为admin。
如果用户不是admin,则这是导航“ li”,需要隐藏(因此$ is_admin!= 1)
<li class="nav-item <?php if (basename($_SERVER['PHP_SELF']) == 'admin.php') { echo 'active'; } ?>">
<i id="icon" class="fas fa-cog"></i><a id="nav-text" class="nav-link text-uppercase " href="admin.php">Admin</a></li>
由于它已经包含PHP代码,我无法这样做:
<? php
if ($is_admin = 1) {
echo "
<li> that needs to be hidden if user is not admin (hence $is_admin != 1)
<li class="nav-item <?php if (basename($_SERVER['PHP_SELF']) == 'admin.php') { echo 'active'; } ?>">
<i id="icon" class="fas fa-cog"></i><a id="nav-text" class="nav-link text-uppercase " href="admin.php">Admin</a></li>
"
}
?>
请问有什么解决方法的建议吗?
答案 0 :(得分:0)
我会使用sprintf来完成https://secure.php.net/manual/en/function.sprintf.php
<?php
if ($is_admin == 1) {
$adminNavItem='<li class="%s" > \n'
.'<li id="icon" class="fas fa-cog"></i><a id="nav-text" class="nav-link text-uppercase " href="admin.php">Admin</a></li> \n'
.'</li> \n';
$adminNavItemClass='';
if (basename($_SERVER['PHP_SELF']) == 'admin.php') {
$adminNavItemClass='active';
}
echo sprintf($adminNavItem, $adminNavItemClass);
}
?>
PS:看看TWIG https://twig.symfony.com/或https://github.com/bobthecow/mustache.php如今,在HTML内部直接编写PHP代码通常不是一个好主意。
尽管这最初是作为CGI C二进制文件的模板引擎的目的。 https://www.youtube.com/watch?v=fYTKm2oUzAg