View Composers can solve this issue if there is a common view (or view path) which uses that variable
Nov 5, 2018
4
Level 4
I am calling query in every single function for navbar
I am calling query in every single function for navbar
public function home()
{
$navbar = Course::all();
$class = Class_::where('is_delete',0)->get();
return view('frontend.home',compact('class','navbar'));
}
public function cart_list()
{
$navbar = Course::all();
return view('frontend.cart_list',compact('navbar'));
}
public function class_list($course_)
{
$navbar = Course::all();
$class = Class_::all();
return view('frontend.class_list',compact('class','navbar'));
}
public function classdetail($id)
{
$navbar = Course::all();
$class = Class_::findOrFail($id);
return view('frontend.class_detail',compact('class','navbar'));
}
my file structure like this..
header.blade.php
navbar.blade.php
master.blade.php
footer.blade.php
I don't want to call navbar query in every function.. Pls suggest me..
Level 67
Several ways, but the simplest is
/app/Providers/AppServiceProvider
public function boot()
{
// when navbar view is called
View::composer('navbar', function ($view) {
// pass it a variable called $navbar containing all courses
$view->with('navbar', Course::all());
});
}
public function home()
{
//$navbar = Course::all();
$class = Class_::where('is_delete',0)->get();
//return view('frontend.home',compact('class','navbar'));
return view('frontend.home',compact('class'));
}
1 like
Please or to participate in this conversation.