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 ?
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);
}
}
Ping : Top 5 des fonctionnalités Laravel à connaître - YannPl