Injection automatique de données dans une vue

Avec Laravel, nous pouvons avoir souvent les mêmes données à mettre dans nos vues. Un exemple évident est la génération d’un menu en fonction de données ou des informations sur l’utilisateur connecté ou un breadcrumb(fil d’ariane).

Avec laravel 4, il existe le compositeur de vues, il nous permet de ne pas réécrire a chaque appel a nos vues le même code dans diverses actions de notre contrôleur.

View::make('hello')
     ->with ('menu',     Categories::all() )
     ->with ('sousmenu', Rubriques::all()  );

Nous pouvons transformer ce code en :

View::composer(array('hello','produits','plus'), function($view) {
   $view->with('menu',     Categories::orderBy('name')->get(array('id','name')) )
        ->with('sousmenu', Rubriques::orderBy('title')->remember(100)->get() )
        ->with('utilisateur', User::find($iduser)->datas );
});

En bon fainéant, je déteste dupliquer mon code, merci laravel :)

Il existe aussi

View::share('menu', Menu::all() );

Mais la, il injecte les données dans toutes les vues ! vous avez les mêmes données dans la partie front et back ? moi pas, donc pas pour moi :(

Avec composer(et share) on injecte les datas AVANT de créer la vue

Share Button

Vous devriez aimer...

1 Response

  1. patrick dit :

    Pas de différence fonctionnelle, juste une différence à l’endroit, au moment où on injecte les datas.