我不确定我的问题是否清楚。我的控制器中有一个查询,用于计算尚未读取的消息。我插入了一个特定页面的控制器。当我刷新页面时结果很好,但当我点击另一个页面意味着另一个路径时,它会抛出一个错误,表示该变量未被声明(我注意到因为我只在一个特定的控制器中插入它)。 结果应该在我的页面视图的标题中通知(我的标题在我的网站的所有页面中都可见)。问题是如何进行单个调用,以便查询将应用于所有页面。 Bellow是用户界面。enter image description here
我插入查询的控制器
class InvPaginateController extends Controller
{
public function inv_pagination()
{
$it_equipments = DB::table('it_equipments')->paginate(7);
$areas = Areas::all(['id','area_name']);
$dept_offs = DeptOffice::all(['id','dept_name']);
$messages = DB::table('messages')->where('status','=', 0)->count();
$messbody = DB::table('messages')->where('status','=', 0)->paginate(5);
return view('it_equipments.inv_pagination', compact('it_equipments'), compact('areas','dept_offs','messages','messbody'));
}
}
答案 0 :(得分:0)
你可以尝试这样的事情
在AppServiceProvider
view()->composer('layouts.default', function($view){
$it_equipments = DB::table('it_equipments')->paginate(7);
$areas = Areas::all(['id','area_name']);
$dept_offs = DeptOffice::all(['id','dept_name']);
$messages = DB::table('messages')->where('status','=', 0)->count();
$messbody = DB::table('messages')->where('status','=', 0)->paginate(5);
$view->with(compact('it_equipments','areas','dept_offs','messages','messbody'));
});
layouts.default
- 您正在使用的默认布局。
您传递的所有变量都将在使用default.blade.php
文件夹中的layouts
创建的视图中提供
答案 1 :(得分:0)
您需要声明自定义控制器
class BaseController extends Controller
{
public function __construct()
{
$it_equipments = DB::table('it_equipments')->paginate(7);
$areas = Areas::all(['id','area_name']);
$dept_offs = DeptOffice::all(['id','dept_name']);
$messages = DB::table('messages')->where('status','=', 0)->count();
$messbody = DB::table('messages')->where('status','=', 0)->paginate(5);
View::share(compact('areas','dept_offs','messages','messbody'));
}
}
现在每个控制器扩展为BaseController将共享此变量