dress/app/Providers/ViewServiceProvider.php

76 lines
2.6 KiB
PHP

<?php
/**
* View Service Provider
*
* This provider handles global data sharing for both Inertia and Blade views.
*/
namespace App\Providers;
use App\Settings\GeneralSettings;
use Illuminate\Support\Facades\Storage;
use Illuminate\Support\Facades\View;
use Illuminate\Support\ServiceProvider;
use Inertia\Inertia;
class ViewServiceProvider extends ServiceProvider
{
/**
* Register any application services.
*/
public function register(): void
{
//
}
/**
* Bootstrap any application services.
*/
public function boot(): void
{
if ($this->app->runningInConsole() && ! $this->app->environment('testing')) {
return;
}
// Share settings with Inertia
Inertia::share('setting', function () {
try {
$settings = app(GeneralSettings::class);
return [
'site_name' => $settings->site_name,
'site_description' => $settings->site_description,
'site_address' => $settings->site_address,
'site_phone' => $settings->site_phone,
'logo_light_url' => $settings->logo_light ? Storage::url($settings->logo_light) : null,
'logo_dark_url' => $settings->logo_dark ? Storage::url($settings->logo_dark) : null,
'icon_light_url' => $settings->icon_light ? Storage::url($settings->icon_light) : null,
'icon_dark_url' => $settings->icon_dark ? Storage::url($settings->icon_dark) : null,
];
} catch (\Exception $e) {
return [];
}
});
// Share settings with Blade views
View::composer('*', function ($view) {
try {
$settings = app(GeneralSettings::class);
$view->with('setting', [
'site_name' => $settings->site_name,
'site_description' => $settings->site_description,
'site_address' => $settings->site_address,
'site_phone' => $settings->site_phone,
'logo_light_url' => $settings->logo_light ? Storage::url($settings->logo_light) : null,
'logo_dark_url' => $settings->logo_dark ? Storage::url($settings->logo_dark) : null,
'icon_light_url' => $settings->icon_light ? Storage::url($settings->icon_light) : null,
'icon_dark_url' => $settings->icon_dark ? Storage::url($settings->icon_dark) : null,
]);
} catch (\Exception $e) {
$view->with('setting', []);
}
});
}
}