====== 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.
Dans l'exemple, le moteur de template **Blade** est utilisé, d'où la notation entre double-accolade
On peut aussi utiliser des routes nommés pour gérer le menu actif.
Accueil
Contact
Dans ce cas il faut nommer les routes comme suit
Route::controller('/','AccueilController',array('getIndex' => 'accueil.'));
Route::controller('contact','ContactController',array('getIndex' => 'contact.'));