View::share

Ya hemos aprendido a pasar datos a nuestras vistas con view()->with() o utilizando view('plantilla', compact('data')), pero ¿Qué sucede si tenemos algún dato o información que necesitamos pasar a TODAS nuestras vistas? Como por ejemplo el nombre del proyecto, del usuario conectado o de un layout dinámico. Esto podemos lograrlo utilizando el método share disponible en el Facade o helper de View, como aprenderás en el siguiente video:

Puedes utilizar el método share del Facade View de la siguiente forma:

View::share('nombreDeLaVariable', 'valor que quieres compartir')

Con esto lograrás compartir esta variable a través de todas las vistas. Por supuesto, necesitas que esta línea de código sea ejecutada antes y para ello Laravel te recomienda utilizar el método boot de un Service Provider de tu aplicación, por ejemplo AppServiceProvider:

<?php

namespace App\Providers;

use Illuminate\Support\Facades\View;

class AppServiceProvider extends ServiceProvider
{
    /**
     * Bootstrap any application services.
     *
     * @return void
     */
    public function boot()
    {
        View::share('variableAqui', 'valor aquí');
    }

    /**
     * Register the service provider.
     *
     * @return void
     */
    public function register()
    {
        //
    }
}

Si el archivo AppServiceProvider ya tiene demasiada información, entonces puedes generar un nuevo Service Provider con el comando:

php artisan make:provider ViewServiceProvider

Luego registrarlo en el arreglo providers en el archivo config/app.php y entonces utilizar View::share en el método boot del nuevo Service Provider.

No olvides importar el Facade View con use Illuminate\Support\Facades\View; en el Service Provider que quieras utilizar. También puedes utilizar el helper view() y en dado caso no necesitas importar el facade:

view()->share('layout', 'layouts.'.config('html.theme'));

Continua aprendiendo:

 

Regístrate hoy en Styde y obtén acceso a todo nuestro contenido.