Outils pour utilisateurs

Outils du site


devweb:laravel:menu (lu 26960 fois)

Ceci est une ancienne révision du document !


Gestion des menus

Class Menu

Je me suis créé une petite class static afin de stocker le menu actif

J’ai placé ce bout de code dans app/start/global.php mais c’est ptete pas le meilleur endroit.

/**
* Menu
*/
class Menu{
	protected static $menu;
	protected static $sousmenu;
 
	public static function set($menu, $sousmenu=null){
		self::$menu = $menu;
		self::$sousmenu = $sousmenu;
	}
 
	public static function active($menu,$sousmenu=null){
		if(is_null($sousmenu)){
			if($menu==self::$menu)
				return 'active';
		}else{
			if($menu==self::$menu and $sousmenu==self::$sousmenu)
				return 'active';
		}
	}
}

Controller

Maintenant dans votre controller, à chaque appel d’une page vous pouvez définir quel menu est actif.

	public function getIndex() {
		Menu::set('accueil');
		return View::make('accueil');
	}
J’utilise un routage par controller, ma fonction getIndex correspond à un Route::get('/')

Si votre controller concerne un seul menu vous pouvez globaliser le tout via le constructeur

  public function __construct(){
    Menu::set('accueil');
  }

View

Dans votre vue, il n’y a plus qu’à écrire ce bout de code pour définir une class active sur le menu actif.

<li class="{{ Menu::active('accueil') }}">{{HTML::link(url('accueil'),'Accueil')}}</li>
Dans l’exemple, le moteur de template Blade est utilisé, d’où la notation entre double-accolade
devweb/laravel/menu.1428670445.txt.gz · Dernière modification: 10-04-2015 14:54 de edmc73