Skip to main content

Send variable to all blades using composer view

Reference:
https://www.qcode.in/use-laravel-view-composer-to-share-data-in-partial-views/

Steps1 :inside app/Http , create ViewComposers.php

inside ViewComposers.php

<?php
namespace App\Http\ViewComposers;

use App\Nav;

class NavComposer
{

public function compose($view)
{
// dd("ds");
$x="hello baby";
$view->with('x', $x);
}
}

Now
step 2:
php artisan make:provider ComposerServiceProvider

step 3:
inside config - app.php

inside providers:
'providers' => [
    ...
    App\Providers\ComposerServiceProvider::class,
]
ComposerServiceProvider:

<?php

namespace App\Providers;

use Illuminate\Support\ServiceProvider;
use Illuminate\Support\Facades\View;
use App\News;

class ComposerServiceProvider extends ServiceProvider
{

public function boot()
{
// this redirect to view composers navcomposer function : this is one way

// View::composer(
// '*', 'App\Http\ViewComposers\NavComposer'
// );

//this is next way from where we send data directly
View::composer('*', function ($view) {
$x=News::orderBy('id','desc')->get();
$y="second data";
$view->with('x',$x)->with('y',$y);
});

}


public function register()
{
//
}
}

Now inside blade:

@foreach ($x as $item)

<div class="item">

{{$item->title}}

</a>
</div>

@endforeach
<h1>{{$y}}</h1>




Comments