PHP if для выполнения опции nav, если переменная true - PullRequest
0 голосов
/ 27 января 2019

У меня есть навигация в html, в которую вставлен PHP-код, один из символов "li" должен отображаться, только если пользователь является администратором.Мне уже удалось настроить значение, чтобы система распознавала, является ли пользователь администратором, путем проверки переменной $ is_admin.

Это nav "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 голосов
/ 27 января 2019

Я бы использовал 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 Написание PHP-кода напрямуюв настоящее время внутри HTML обычно не очень хорошая идея.

Хотя это было его первоначальным назначением в качестве движка шаблонирования для двоичных файлов CGI C.https://www.youtube.com/watch?v=fYTKm2oUzAg

...