Laravel 5: variable global de vista de hoja disponible en todas las plantillas

¿Cómo puedo en Laravel 5 crear una variable global que estará disponible en todas las plantillas Blade?

Opción 1:

Puede usar view::share() manera:

 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'); } } 

Opción 2: usar un compositor

  1. Crea un archivo de compositor en la app\Composers\HomeComposer.php

NB: crea una app\Composers si no existe

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

Entonces puede adjuntar el compositor a cualquier vista haciendo esto

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

Crea un nuevo proveedor de servicios como se sugiere aquí

Agregue su nuevo proveedor de servicios al archivo de configuración (config / app.php).

En el método de arranque de su nuevo proveedor de servicios, use:

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

Ahora está listo para usar $ something_cool en todas sus vistas.

Espero que esto ayude.

Buscando la solución del mismo problema y encontró la mejor solución en la documentación de Laravel. Simplemente use View::share en AppServiceProvider así:

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

Detalles aquí .

Puedes hacer esto con ver compositores . Los compositores de vista se ejecutan cuando se carga una plantilla. Puede pasar un Cierre con funcionalidad adicional para esa vista. Con view composers puedes usar comodines. Para hacer un compositor de vista para cada vista simplemente use un * .

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

También puede hacer esto sin un cierre, como puede ver en los documentos.

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

La clase de compositor de perfil debe tener un método de composición.

Los compositores de vista se ejecutan cuando se representa una vista. Laravel también ha visto creadores. Estos se ejecutan cuando se crea una instancia de una vista.

También puede optar por utilizar un BaseController con un método setupLayout. Luego, cada vista que cargue se carga a través del método setupLayout, que agrega algunos datos adicionales. Sin embargo, al usar compositores de vista, está bastante seguro de que el código se ejecuta. Pero con el enfoque de BaseController tienes más flexibilidad porque puedes omitir la carga de los datos adicionales.

EDITAR: Como menciona Nic Gutierrez, también puedes usar view share.

Además, puedes hacer esto en el archivo Route.php :

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

puede mostrarlo en la sesión, puede definirlo en el archivo .env (variables estáticas)

    Intereting Posts