Partager une variable entre toutes les vues Blade Laravel

Si vous avez déjà construit une application Laravel utilisant massivement les templates Blade, vous vous êtes certainement posé la question suivante: Dans Laravel, comment partager une variable entre toutes les vues Blade ?

La méthode View::share de Laravel

Depuis la version 5 de Laravel, il existe une méthode sur la façade View pour partager une variable globale entre toutes les vues: View::share('variable', $data);

Une fois cette variable partagée, elle sera accessible dans toutes les vues Blade très simplement via la variable $variable

Où l’appeler ?

Pour être certain d’avoir accès à la variable dans chaque vues, il est nécessaire d’appeler la méthode View::share lors de chaque requête. Une bonne manière de le faire, est d’utiliser la méthode boot du AppServiceProvider. Elle sera appelée à chaque requête:

<?php
 
namespace App\Providers;
 
use Illuminate\Support\Facades\View;
 
class AppServiceProvider extends ServiceProvider
{
    /**
     * Bootstrap any application services.
     *
     * @return void
     */
    public function boot()
    {
        $variable = [1, 2, 3, 4];
        View::share('variable', $variable);
    }
}

Une autre manière Laravel de Partager une variable entre toutes les vues est d’utiliser un middleware. Les middleware sont des fonctions que l’on peut attacher à chaque requête et qui permettent d’exécuter du code avant de donner la main à l’application.

Exemple de middleware:

<?php
 
namespace App\Http\Middleware;
 
use Closure;
 
class AddGlobalVariable
{
    public function handle($request, Closure $next)
    {
        $variable = [1, 2, 3, 4];
        View::share('variable', $variable);

        return $next($request);
    }
}

Retrouvez d’autres astuces Laravel

1 réflexion sur “Partager une variable entre toutes les vues Blade Laravel”

  1. Ping : Top 5 des fonctionnalités Laravel à connaître - YannPl

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *