Décrivez ici votre problème ou ce que vous cherchez à faire.
Bonsoir les codeurs, vu que la dernière version de bootstrap "active" se trouve dans la balise <a classe="nav-link active"></a>

voici mon code

<li class="nav-item">
        <a class="nav-link <?php if($_SERVER['SCRIPT_NAME'] === 'index'): ?>active <?php endif; ?>" href="index.php">Accueil</a>
      </li>
      <li class="nav-item">
        <a class="nav-link <?php if($_SERVER['SCRIPT_NAME'] === 'contact'): ?>active <?php endif; ?>" href="contact.php">Contact</a>
      </li>

Ce que je veux
mon problème est le suivant: le lien active n'est pas vraiment active, je ne comprend rien avec la superglobale $_SERVER['SCRIPT_NAME']

Ce que j'obtiens
J'obtiens rien comme lien active
Décrivez vos éventuelles erreurs ou ce que vous obtenez à la place de ce que vous attendez :(

4 réponses


Bonsoir,

remplaces index par /index.php et contact par /contact.php.

voici mon code mais sa ne marche toujour pas, j'ai fait comme vous m'avez dit

//Code PHP
<?php
function nav_link(string $lien, string $titre): string
{
$classe = 'nav-link';
if($_SERVER['SCRIPT_NAME'] === $lien){
$classe .= 'active';
}
return <<<HTML
<a class="$classe" href="$lien">$titre</a>
HTML;
}
?>

//Code HTML
<ul class="navbar-nav me-auto mb-2 mb-lg-0">
<li class="nav-item">
<a class="nav-link <?php if($_SERVER['SCRIPT_NAME'] === 'index.php'): ?>active <?php endif; ?>" href="index.php">Accueil</a>
</li>
<li class="nav-item">
<a class="nav-link <?php if($_SERVER['SCRIPT_NAME'] === 'contact.php'): ?>active <?php endif; ?>" href="contact.php">Contact</a>
</li>
</ul>

il manque le / sinon tu fais var_dump de $_SERVER['SCRIPT_NAME'] pour voir le contenu

ok j'essais