HAN
https://laravel.com/docs/7.x/views
↑ Bu üstteki sayfada diyor ki:
Bir veya birden fazla şablona ya da tüm şablonlara (yani *.blade.php ile biten dosyalara) veri göndermeniz için iki yol var diyor. Biri View::share('key', 'value');
şeklinde tüm şablonlara veri gönderme. Bunu AppServiceProvider::boot() yöntemi içerisinde kullanabilirsiniz. Örneğin View::share('key', 'value'); şeklinde kullandığınızda artık tüm şablonlarda $key şeklinde bir değişken olacak ve {{ $key }} yazdığınızda oraya value basacak.
Tüm şablonlara değil de bir veya birden fazla şablona veri göndermek istereniz ise bunun için şablon bestecisi yani view composer var diyor.
Önce bir Service Provider oluşturun diyor (service provider sayfasına sayfaya link vermiş bakmanız için)
php artisan make:provider ViewServiceProvider
Daha sonra şablonlara veri göndermek için iki yol var diyor. Biri anonim (closure) diğeri sınıf tabanlı (class based) diyor. Bunları oluşturduğunuz ViewServiceProvider içerisinde boot() yöntemi içerisinde yazacaksınız diyor. Şöyle de örnek vermiş:
<?php
namespace App\Providers;
use Illuminate\Support\Facades\View;
use Illuminate\Support\ServiceProvider;
class ViewServiceProvider extends ServiceProvider
{
/**
* Register any application services.
*
* @return void
*/
public function register()
{
//
}
/**
* Bootstrap any application services.
*
* @return void
*/
public function boot()
{
// Using class based composers...
View::composer(
'profile', 'App\Http\View\Composers\ProfileComposer'
);
// Using Closure based composers...
View::composer('dashboard', function ($view) {
//
});
}
}
Siz nasıl yapacaksınız? Şöyle:
Anonim
// resources/views/layouts/header.blade.php ise
View::composer('layouts.header', function ($view) {
$activeUserCount = User::active()->count();
$view->with('activeUserCount', $activeUserCount)
});
{{-- resources/views/layouts/header.blade.php içinde --}}
Toplam {{ $activeUserCount }} aktif kullanıcı var
Sınıf tabanlı
View::composer(
'layouts.header', 'App\Http\View\Composers\HeaderComposer'
);
app/Http/View/Composers/HeaderComposer.php:
<?php
namespace App\Http\View\Composers;
use Illuminate\View\View;
class HeaderComposer
{
public function compose(View $view)
{
$view->with('activeUserCount ', User::active()->count());
}
}
Son olarak layouts.header yazdığınız yere layouts.* yazarsanız layouts klasöründeki tüm şablonlara gönderir. Yani wildcard desteği var.