Bonjour,
j'utilise cakephp, et j'ai crée un menu global, et je veux que quand je suis sur une page,
attribuer une class .active pour changer sa couleur.
bon j'ai suivi le conseil de Grafikart créer une variable $menu_item dans cette discussion: http://www.grafikart.fr/forum/topic/3818
mais le problème c'est que quand je n'initialise pas la variable,
une erreur apparait "Undefined variable: menu_item APP\View\Layouts\default.ctp"
dois-je dans tous mes actions initialiser la variable?
ou il y a une autre solution?
Bonjour tina.
Il y a mieux que cette solution.Tu peux faire comme ceci :
<li<?php if($this->params'controller'] == 'posts' && $this->action == 'index'): echo ' class="active"'; endif; ?>><?= $this->Html->link('Actualités', array('controller'=>'posts','action'=>'index')); ?></li>
Si ce ne sont que des liens sans action particulière, tu peux te passer de la partie " && $this->action == 'index'", comme dans l'exemple ci-dessous :
<li<?php if($this->params'controller'] == 'posts'): echo ' class="active"'; endif; ?>><?= $this->Html->link('Actualités', array('controller'=>'posts','action'=>'index')); ?></li>
Montre nous ton code mais je pense qu'au niveau de ta class tu dois avoir quelquechose comme
<?php if(isset($menu_item)){echo 'active';}
Si ce n'est pas le cas teste ça.
dans default.ctp :
<li <?php if ($menu_item == 'accueil') {echo ' id="en-cours"';} ?>> <?php echo $this->Html->link('Accueil', 'accueil'); ?></li>
dans action accueil :
$menu_item = "accueil";
$this->set('menu_item' , $menu_item);
Merci, j'ai modifié mon code comme tu as proposé et ça marche maintenant :
<li <?php if (isset($menu_item) && ($menu_item == "accueil")) {echo ' id="en-cours"';} ?>> <?php echo $this->Html->link('Accueil', 'accueil'); ?></li>
mais dans le cas ou je veux utiliser des variables comme $title_for_layout comment je dois procéder?