【问题标题】:PHP if statement to execute a nav option if variable is true如果变量为真,PHP if 语句将执行导航选项
【发布时间】:2019-01-27 14:15:42
【问题描述】:

我有一个 html 导航,其中嵌入了 PHP 代码,只有当用户是管理员用户时,“li”之一才必须显示。我已经设法通过检查 $is_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>
"
}
?>

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

【问题讨论】:

    标签: php html html-lists nav


    【解决方案1】:

    我会使用 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

    【讨论】:

    • 认为应该通过添加此 并将css中的隐藏类配置为可见:隐藏;
    • 嗯,这是最简单的解决方案...我用模板引擎做的太多了,看不到它:>
    • 感谢您的帮助 :)
    • 使用 display:none 代替 visible:hidden 然后浏览器完全删除元素而不是仅仅隐藏它,但仍然分配空间。
    猜你喜欢
    • 2013-05-15
    • 1970-01-01
    • 2021-05-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-12
    • 2020-08-19
    相关资源
    最近更新 更多