Bonsoir à tous !

Je souhaite créer un menu de navigation sur mon site (logique ...) et je voudrais que lorsqu'on arrive sur une page du menu, l'onglet de celui-ci se voit attribuer une class .active pour changer sa couleur.

je voudrais donc savoir si cakePHP comporte un composant permettant de générer un menu à partir d'un xml ou autre, un peu comme le composant Zend_Navigation pour Zend Framework.

En attendant, la solution alternative que j'ai trouvé, c'est de comparer l'action courante avec celle du lien et d'attribuer la class si elles correspondent.

<li class="<?php echo ($this->action == 'index') ? 'active' : null; ?>">

Le problème avec cette solution, c'est lorsque plusieurs Controller on des actions du même nom. Existe-t-il un moyen de connaitre le Controller sur lequel on se trouve dans la vue, $this->controller ne fonctionnant pas :( ?

5 réponses


Pakito
Réponse acceptée

C'est $this->params'controller'] pour connaitre le controller depuis une vue.

Du coup, ça peut te permettre de marquer le lien du menu comme actif pour l'ensemble des actions du controller. C'est ce que je fais ;)

Et dans l'admin, ça te permet de dérouler uniquement le menu correspondant au controller que tu es en train de gérer, un peu comme dans l'admin Wordpress.

Moi j'utilise ceci :

<?php $action = $this->request->params'action'];?>
<ul>
        <li><a href="#connexion" <?php echo $action=='login'?'class="active"':'' ;?>>Login</a></li>
        <li><a href="#signup" <?php echo $action=='signup'?'class="active"':'' ;?>>S'enregistrer</a></li>
        <li><a href="#forgot" <?php echo $action=='password'?'class="active"':'' ;?>>Mot de pass oublié</a></li>
</ul>   
</div>

Moi je créer une variable que j'envois dans la vue genre $menu_item (artisanal mais efficace :))

ker0x
Auteur

Merci pour vos réponses :) !

Bonjour à tous,

"Moi je créer une variable que j'envois dans la vue genre $menu_item (artisanal mais efficace)"

Est-il possible de détailler cette solution avec un exemple ?

Merci d'avance