Laravel ‘de Değişkeni tüm View ‘lar ile paylaşma.
Veritabanı ‘ndan veri çektiniz veya eliniz de bi değişken var ve bunu tüm view dosyalarına veya layout dosyanıza göndermek istiyorsunuz. Kafanız karıştı nasıl yaparım dediniz. Çünkü her controller da tekrar tekrar göndermek mantıksız ya da Helper ile uzun yollara başvurdunuz vb. vb. İşte burada doğru yerdesiniz.
Hemen işe koyulalım ve app/Providers/AppServiceProvider.php dosyasına gidip boot() fonksiyonun içine View class ‘ını dahil edelim.
use Illuminate\Support\Facades\View;
daha sonra verimizi çekelim veya belirleyelim, ben footer menülerimi veritabanı ‘ndan çekiyorum.
$footerBaslik = FooterKonum::orderBy('id', 'desc')->get(); //FooterKonum modelimi de dahil ettim
Asıl olay burada, elimizde bulunan değişkeni gönderiyoruz.
View::share('footerBaslik', $footerBaslik);
bu satır da dahil ettiğimiz View class ‘ından share() fonksiyonu ile tüm view ‘lara bu değişkeni gönderiyoruz.
Gönderiyoruz ama bu nasıl oluyor veya mantığı nedir sorularını duyar gibiyim veya cevabını aldın tam kaçacaksın merak ettin, neden ? Anlatayım, AppServiceProviders.php dosyasının içinde ki boot() fonksiyonu adından da anlaşalacağı üzere sistemimiz ayağa kalkarken içinde olan işlemleri önceden gerçekleştiriyor. Bizim de içine dahil ettiğimiz View sınıfımız ise share() fonksiyonun da aşağıda ki mantık ile çalışıyor.
View::share('key', 'value');
key view ‘da hangi isim ile yakalayacağımız değer, value ise taşıdığı değer.
Yani $footerBaslik olarak tüm View ‘lar da bu değere ulaşabilirim.
Görsel ile destekliyelim.
