PHP if语句,如果变量为true,则执行导航选项

时间:2019-01-27 14:15:42

标签: php html html-lists nav

我在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>
"
}
?>

请问有什么解决方法的建议吗?

1 个答案:

答案 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