我试图在我的所有网页上添加一个视图(代码在下面),因此我将其包含在我的布局模板中(因此它会渲染所有内容)。不幸的是,当我尝试运行任何页面时 - 会发生以下错误:
未定义变量:sites(查看: /Users/Documents/audit/resources/views/layouts/check.blade.php)
查看(check.blade.php):
@if (count($sites) == 0)
// Removed as it is irrelevant.
@endif
控制器:
public function siteCheck()
{
return View::make('layouts.check')
->with('sites', Site::where('user_id', Auth::id())
->get());
}
我尝试添加视图(显示错误):
@if(!Auth::guest())
@include('layouts.check')
@endif
N.B。我还没有在路线中添加任何与layouts.check页面相关的代码。
非常感谢你的帮助。
答案 0 :(得分:1)
问题是,当您包含文件layouts.check
时,方法siteCheck()
未启动(因此不存在可变的$ sites)。
您有几个选择:
@include('layouts.check', ['sites' => $sites])
(仍然需要从主视图中的控制器传递$sites
。)
请参阅:https://laravel.com/docs/5.2/views#view-composers
在你的情况下,它看起来像这样:
public function boot()
{
view()->composer('layouts.check', function ($view) {
$view->with('sites', Site::where('user_id', Auth::id())
->get());
});
}
答案 1 :(得分:0)
尝试这个
@if(isset($sites)&&count($sites) == 0)
// Removed as it is irrelevant.
@endif
注意:强>
当您使用@include('layouts.check')
时未设置$sites