Laravel 5 – variável global de visualização Blade disponível em todos os modelos

Como eu posso no Laravel 5 fazer uma variável global que estará disponível em todos os templates do Blade?

Opção 1:

Você pode usar view::share() assim:

 variable1 ); View::share ( 'variable2', $variable2 ); View::share ( 'variable3', 'I am Data 3' ); View::share ( 'variable4', ['name'=>'Franky','address'=>'Mars'] ); } } class HomeController extends BaseController { //if you have a constructor in other controllers you need call constructor of parent controller (ie BaseController) like so: public function __construct(){ parent::__construct(); } public function Index(){ //All variable will be available in views return view('home'); } } 

Opção 2: use um compositor:

  1. Crie um arquivo do compositor em app\Composers\HomeComposer.php

NB: crie app\Composers se não existir

 with('variable1', 'I am Data') ->with('variable2', 'I am Data 2'); } } 

Então você pode append o compositor a qualquer visão, fazendo isso

  ['home'] //attaches HomeComposer to home.blade.php ]); } public function Index(){ return view('home'); } } 

Crie um novo provedor de serviços, conforme sugerido aqui

Adicione seu novo provedor de serviços ao arquivo de configuração (config / app.php).

No método de boot do seu novo provedor de serviços, use:

 View::share( 'something_cool', 'this is a cool shared variable' ); 

Agora você está pronto para usar $ something_cool em todas as suas visualizações.

Espero que isto ajude.

Procurando por solução do mesmo problema e encontrou a melhor solução na documentação do Laravel. Basta usar View::share no AppServiceProvider desta maneira:

 View::share('key', 'value'); 

Detalhes aqui .

Você pode fazer isso com os compositores de visualização . Os compositores de vista são executados quando um modelo é carregado. Você pode passar um Encerramento com funcionalidade adicional para essa visão. Com os compositores de visualização, você pode usar curingas. Para fazer uma visualização do compositor para cada visualização, use apenas um * .

 View::composer('*', function($view) { $view->with('variable','Test value'); }); 

Você também pode fazer isso sem fechar, como pode ver nos documentos.

 View::composer('*', 'App\Http\ViewComposers\ProfileComposer'); 

A class do compositor de perfil deve ter um método de composição.

Os compositores de vista são executados quando uma visualização é renderizada. O Laravel também vê criadores. Estes são executados quando uma visão é instanciada.

Você também pode optar por usar um BaseController com um método setupLayout. Em seguida, todas as visualizações que você carregar serão carregadas pelo método setupLayout, que adiciona alguns dados adicionais. No entanto, usando compositores de visualização, você tem certeza de que o código é executado. Mas com a abordagem BaseController você tem mais flexibilidade, porque você pode pular o carregamento dos dados extras.

EDIT: Como mencionado por Nic Gutierrez você também pode usar o compartilhamento de exibição.

Além disso, você pode fazer isso no arquivo Route.php :

 view()->share('variableName', $variable); 

você pode flash-lo na session, você pode defini-lo no arquivo .env (estático vars)

    Intereting Posts