Cómo compartir datos con todas las vistas en Laravel: un vistazo al método share
- Publicado el 27 diciembre, 2024
- Palabras: 93
¿Necesitas que determinados datos estén disponibles en todas tus vistas? ¡El método share del facade View de Laravel facilita esta tarea! Exploremos cómo compartir de manera eficaz los datos de una vista global.
#Uso básico
Ocasionalmente, puede que necesite compartir datos con todas las vistas que se representan en su aplicación. Puede hacerlo mediante el método share del facade View. Normalmente, debe realizar llamadas al método share dentro del método boot de un service provider. Puedes agregarlo a la clase App\Providers\AppServiceProvider o generar un service provider independiente:
use IlluminateSupportFacadesView;
class AppServiceProvider extends ServiceProvider
{
public function boot(): void
{
View::share('key', 'value');
}
}
#Ejemplo práctico
A continuación se muestra una implementación práctica para una aplicación SaaS:
use IlluminateSupportFacadesView;
use AppServicesSystemSettingsService;
use AppServicesNavigationService;
class ViewServiceProvider extends ServiceProvider
{
public function boot(): void
{
View::share([
'app_name' => config('app.name'),
'support_email' => 'help@example.com',
'current_year' => now()->year
]);
// Share system settings
if (!app()->runningInConsole()) {
$settings = app(SystemSettingsService::class)->getGlobalSettings();
View::share([
'maintenance_mode' => $settings->maintenance_mode,
'system_notice' => $settings->current_notice,
'footer_links' => $settings->footer_navigation
]);
}
// Share user-specific data
View::composer('*', function ($view) {
if ($user = auth()->user()) {
$view->with([
'unread_notifications' => $user->unreadNotifications->count(),
'account_type' => $user->subscription?->type,
'company_name' => $user->company?->name
]);
}
});
}
}
Compartir vistas es perfecto para datos que deben estar disponibles en todas partes de su aplicación, como configuraciones del sistema, preferencias de usuario o valores de configuración global.
Antonio Jenaro
Web Developer
Fuente: Harris Raftopoulos
Inicia la conversación
Hazte miembro de Antonio Jenaro para comenzar a comentar.
Regístrate ahora¿Ya estás registrado? Inicia sesión