Laravel 未定义变量:食物
大家好,我需要帮助,我知道这看起来很简单,但我有点困惑,我的main.blade.php文件中有一个foreach循环,它显示了我数据库中的食物,它工作正常,但当它被点击时,它意味着指向个人帖子,这就是我得到错误的地方 未定义变量:食品 这里是main.blade.php文件中的我的foreach循环Laravel 未定义变量:食物,laravel,Laravel,大家好,我需要帮助,我知道这看起来很简单,但我有点困惑,我的main.blade.php文件中有一个foreach循环,它显示了我数据库中的食物,它工作正常,但当它被点击时,它意味着指向个人帖子,这就是我得到错误的地方 未定义变量:食品 这里是main.blade.php文件中的我的foreach循环 @foreach($foods as $food) <li class="item"> <a href="{{ rout
@foreach($foods as $food)
<li class="item">
<a href="{{ route('Foods.show', $food->id) }}">
<img src="{{ Storage::disk('local')->url('food_images/'.$food->image ) }}" class="img-responsive w-25 p-3" alt="Food" >
<div class="menu-desc text-center">
<span>
<h3> {{ $food->title }}</h3>
{{ $food->body }}
</span>
</div>
</a>
<h2 class="white"> #{{ $food->price }}</h2>
</li>
@endforeach
和heres Foods.show控制器功能
public function show($id)
{
$foods = Food::Find($id);
return view('foods.show')->withFood($foods);
}
请问我做错了什么没有数据被传递到视图 这是向视图传递数据的方式:
public function LoadHome()
{
$foods = Food::orderBy('created_at','desc')->inRandomOrder()
->limit(12)
->get();
return view('pages.home', ['foods' => $foods])
}
如果您总是想在main.blade.php中包含$foods,那么应该将其放在服务提供商中
View::share('foods', Food::orderBy('created_at','desc')->inRandomOrder()
->limit(12)
->get());
您是否尝试过使用如下方式将数据从控制器传递到视图:
public function show($id)
{
$foods = Food::Find($id);
return view('foods.show')->with('foods', $foods);
}
或者,如果要向视图传递多个变量:
public function show($id)
{
$foods = Food::Find($id);
$something = "else";
return view('foods.show', compact('foods', 'something'));
}
您的视图不知道此时的$foods
是什么,因此最好在循环之前检查foods是否已设置:
@if (isset($foods) && $foods->count() > 0)
@foreach($foods as $food)
...
@endforeach
@endif
有关更多信息,请参阅文档。如果希望在视图中将变量命名为
foods
,则需要使用with foods
而不是with food
:
return view(...)->withFoods($foods);
正如其他答案中提到的,还有其他方法可以将数据传递给视图。您应该将其设置为全局。将此代码放在您的服务提供商视图::share('data',[1,2,3]);用食物($foods)更改
->代码>至->带('foods',$foods)代码>哪个代码?为什么我必须将其设置为全局如果您希望变量为foods
它将是withFoods
而不是withFood
顺便说一句,请删除这一行$foods=Food::all()代码>来自LoadHome()
,无需调用。是的,我已经这样做了,这正是我将数据传递到视图中的方式感谢大家的帮助,已经解决了这个问题。问题出在食品非食品公共功能show($id){$foods=Food::Find($id);return view('foods.show')->withFoods($foods);}再次感谢\View::share('foods',Food::orderBy('created_at','desc')->inRandomOrder()->limit(12)->get();你是说我应该把它添加到我的AppSerivceProvider.php文件中,对吗@我试过这个。公共函数LoadHome(){$foods=Food::orderBy('created_at','desc')->inRandomOrder()->limit(12)->get();返回视图('pages.home',['foods'=>$foods])。它给出了相同的结果。感谢大家的帮助,已经修复了问题是关于食品而不是食品公共功能显示($id){$foods=Food::Find($id);返回视图('foods.show')->关于食品($foods);}再次感谢大家的帮助,已经修复了这个问题,它是关于食品而不是食品公共功能的show($id){$foods=Food::Find($id);return view('foods.show')->withFoods($foods);}再次感谢
return view(...)->withFoods($foods);