Bonjour,

J'ai un problème avec le TP "gérer les permissions".
D'abord je m'explique ! J'ai adapter le TP "animer un champ" avec le TP "gérer les permissions" et j'ai créé un menu dessus. J'ai un fichier menu.inc.php + Tout mes fichiers du TP + mon fichier css. Le menu de connexion déconnexion compte administration fonctionne très bien si je fais comme dans le tp mais si je le mais dans mon fichier menu.inc.php les écritures du menu partent tout à gauche sur le menu j'inscris aussi le nom du script c'est pareil mais par à droite le formulaire passe en dessous.

Voici le code du menu qui fonctionne mais pas d'url valide :

<div class="head">
            <nav>
                <ul>
                    <li><a href="#">Accueil</a></li>
                    <li><a href="#">Lien 1</a></li>
                    <li><a href="#">Lien 2</a></li>
                    <li><a href="#">Lien 3</a></li>
                    <li><a href="#">Lien 4</a></li>
                </ul>
            </nav>
            <a href="#" class="logo" title="Complément Oasice System">C . O . S</a>
            <div class="recherche">
                <form action="#">
                        <input type="text" name="recherche" id="search" value="Trouve moi !"/>
                </form>
            </div>
        </div>

Et voici celui qui ne fonctionne pas :

<?php if($Auth->user('id')): ?>
   <h4>Bonjour <?php echo $Auth->user('login'); ?></h4 >
        <div class="head">
            <nav>
                <ul>
                    <li><a href="index.php?p=compte">Mon compte</a></li>
                    <?php if($Auth->user('role') == 'admin'): ?>
                    <li><a href="index.php?p=admin">Administration</a></li>
                    <?php endif; ?>
                    <li><a href="index.php?p=logout">Se déconnecter</a></li>
                    <?php else: ?>
                    <li><a href="index.php?p=login">Se connecter</a></li>
                    <?php endif; ?>
                </ul>
            </nav>
            <a href="#" class="logo" title="Complément Oasice System">C . O . S</a>

            <div class="recherche">
                <form action="#">
                        <input type="text" name="recherche" id="search" value="Trouve moi !"/>
                </form>
            </div>
        </div>

Voici Dans ma page index.php

<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Vous êtes sur COS...</title>
    <link rel="stylesheet" href="css/style.css" />
</head>
<body>
    <header>
        <?php include ('menu.inc.php'); ?>
    </header>
<div class="head">
   <div id="conteneur">
        <?php echo $content_for_layout; ?>
   </div>

Fichier css partie du menu

/*===============================*/
/* Navigation */

.head nav {
    display: inline-block;
}
.head nav ul {
    list-style-type: none; /* Permet de retirer les puces à chaque li */
    margin-top: 12px;
}
.head nav li {
    display: inline-block; /* Chaque inline-block permet de placer les liens côte à côte */
    margin-right: 15px;
    /*text-align: center;*/
}
.head nav a {
    font-family: 'Lobster14Regular';
    font-size: 18px;
    /*font-size: 1.0em;*/
    color: #9c9c9c;
    padding-bottom: 3px;
    text-decoration: none;
    text-shadow: 0px 1px 0px #2c2D2f;   /* Effet sur le texte du menu */
}
.head nav a:hover {
    color: #FFF;
    border-bottom: 2px solid #FFF;
    text-shadow: 0px 1px 0px #2c2D2f;   /* Effet sur le texte du menu */
}
/* Logo */
.logo {
    font-family: 'Lobster14Regular';
    font-size: 32px;
    color: #9c9c9c;
    float: right;
    text-decoration: none;
    text-shadow: 0px 1px 0px #2c2D2f;   /* Effet sur le texte du menu */
}

/*===============================*/
/* Formulaire de recherche */
.head .recherche {
    position: absolute;
    top: 12px;
    right: 10px;
    border: 1px solid #363739;
    -webkit-border-radius: 50px;
    -khtml-border-radius: 50px;
    -moz-border-radius: 50px;
    border-radius: 50px;
    background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #84868d), color-stop(100%, #424447));
    background: -webkit-linear-gradient(top, #84868d 0%, #424447 100%);
    background: -moz-linear-gradient(top, #84868d 0%, #424447 100%);
    background: -o-linear-gradient(top, #84868d 0%, #424447 100%);
    background: -ms-linear-gradient(top, #84868d 0%, #424447 100%);
    background: linear-gradient(top, #84868d 0%, #424447 100%);
    padding: 0;
    margin: 0;
    height: 18px;
}
.head .recherche input {
    -webkit-border-radius: 50px;
    -khtml-border-radius: 50px;
    -moz-border-radius: 50px;
    border-radius: 50px;
    border: none;
    height: 20px;
    outline: none;
    padding: 0px 5px 0px 23px;
    background: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA0AAAAOCAQAAABedl5ZAAAAzklEQVQYlWNgAIP%2F9v%2FrwVCfARn85%2F%2B%2F%2Fz8CzEeS%2BnMQJPL0%2Ba37796DJfsZ4EYBwar9DBkMCQwFR86DJeXBUo%2F6QToYHCAKtaO%2Bf%2F%2F%2F%2F3kmmHNm%2Fv%2F%2FD27CTee4c%2Ff%2F%2F2vT4VKfXiM5CQg2t4M5lckQd%2F3nB0n8vQji5HhCFEpArP73AeGF35dACkEgYPtxmODXnxueg2igbqikh3l%2F1%2FpV%2B7vWyzUwxHatB%2BvcBLNfgMEA6AEDBg4g26Br%2FffvqeUMWIEBULcEdikGkG4AzGOfgUQC7TUAAAAASUVORK5CYII%3D') no-repeat 7px center;
    -webkit-box-shadow: inset 0px 0px 5px rgba(0,0,0,0.4);
    -moz-box-shadow: inset 0px 0px 5px rgba(0,0,0,0.4);
    box-shadow: inset 0px 0px 5px rgba(0,0,0,0.4);
    color: #FFF;
    text-shadow: 0px 1px 0px #2c2D2f;
    width: 100px;
    -webkit-transition: 0.5s;
    -moz-transition: 0.5s;
    -o-transition: 0.5s;
    -ms-transition: 0.5s;
    transition: 0.5s;
}
.head .recherche input:focus {
    background: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA0AAAANCAYAAABy6%2BR8AAAAlElEQVR42oWQQRHEIAxF10ElVAISVgo3bCABCUhYCZWAhEpAQpoD6bzJhNnDO0DyyA8fEXkppXyVCpLViDUfyqVIQN9JFMY637hrlCySFauL21E7KVWbAIGx56rnSLqc5KPXSLo3kySalPhTygFhRDtFC09EIsMeZJSGBj7Qveh3OJW89syImiH%2BIO2BOJX0XwA2%2BQEL4pAhSX4aBQAAAABJRU5ErkJggg%3D%3D') no-repeat 7px center #FFF;
    width: 200px;
    color: #000;
    text-shadow: 0px 1px 0px #FFF;
}

Merci pour votre aide car je ne vois pas le problème.
Bruno

7 réponses


Bonjour,

Tu dis que cela ne marche pas, c'est à dire?
Tu as une erreur ? ou juste rien ne s’affiche?

$Auth existe bien ?

Bruno
Auteur

@gato

Non ça fonctionne, mais mon menu depuis que j'ai inséré les codes PHP la mise en forme du menu est tout en désordre !
Voici 3 captures d'écran.

Avant connexion
Après connexion
Menu sans les codes PHP

Si quelqu'un à une idée.

Merci
Bruno

Déjà moi je trouve une erreur ici:

<ul>
                 <li><a href="index.php?p=compte">Mon compte</a></li>
                 <?php if($Auth->user('role') == 'admin'): ?>
                 <li><a href="index.php?p=admin">Administration</a></li>
                 <?php endif; ?>
                 <li><a href="index.php?p=logout">Se déconnecter</a></li>
                 <?php else: ?>
                 <li><a href="index.php?p=login">Se connecter</a></li>
                 <?php endif; ?>
             </ul>

Tu ouvre un if puis tu le ferme puis tu fais un else pour tu referme ton if, en faites le endif qui est avant le else est en trop

Après je vois pas le problème pour ton positionnement

Bruno
Auteur

Bonjour djtec;

C'est normal c'est normal si je suis pas connecter, alors se connecter apparait ou si je suis déconnecter le menu mon compte, administration et se déconnecter sont masqué et je n'est que Se connecter.

Va voir le TP de "jonathan" à la 36:33 et la tu as le code.

Bruno

Ah ouai désolé je ne savais pas qu'il allait avec le premier if

Bruno
Auteur

De rien.

en espèrent que quelqu'un puisse m'aider

Bruno
Auteur

Bien j'ai trouvé. Ça fonctionne, mais je ne sais pas si c'est bien écrit.

Si quelqu'un veut corriger.

menu.inc.php

<div class="head">
               <?php if($Auth->user('id')): ?>
        <div class="head">
            <nav>
                <ul>
                    <li>Bonjour <?php echo $Auth->user('login'); ?></li>
                    <li><a href="index.php?p=compte">Mon compte</a></li>
                    <?php if($Auth->user('role') == 'admin'): ?>
                    <li><a href="index.php?p=admin">Administration</a></li>
                    <?php endif; ?>
                    <li><a href="index.php?p=logout">Se déconnecter</a></li>
                    <?php else: ?>
                </ul>
            </nav>
            <nav>
                <ul>
                    <li><a href="index.php?p=login">Se connecter</a></li>
                    <?php endif; ?>
                </ul>
            </nav>
            <a href="index.php?p=home" class="logo" title="Complément Oasice System">C . O . S</a>

            <div class="recherche">
                <form action="#">
                        <input type="text" name="recherche" id="search" value="Trouve moi !"/>
                </form>
            </div>
        </div>
        </div>

J'ai du mettre deux balises <nav> et deux ul dû au <?php endif: ?> et tout prend bien ca place et la feuille de style.
Merci
Bruno