Laravel初学者です。
オリジナルアプリを作成しているのでその過程を記事にしています。
理解が曖昧なところも多いため、ご指摘等ありましたらご連絡いただければ幸いです。
今回は
ErrorException Undefined variable: ×××
が出たのでその解決方法を記録として残します。
環境
Version | |
---|---|
PHP | 7.4.14 |
Laravel | 8.24.0 |
mysql | 8.0.23 |
docker | 20.10.2 |
docker-compose | 1.27.4 |
エラーが出た流れ
投稿データをDBから取ってきて一覧表示させたいと思い、
indexアクションとforeachで表示させる実装をしていました。
@foreach($games as $game)
@if($game->image_path)
<div class="game-lists">
<img src="{{ $game->image_path }}">
</div>
@endif
@endforeach
上記がviewの記述です。
foreachで$games
から1つずつ$game
として取り出して表示させています。
public function index()
{
$games = Game::all();
return view('game.index');
}
上記がコントローラーの記述です。
Gameモデルからallで全てデータを取り出し$gamesに入れています。
この状態でindexを表示させると
ErrorException Undefined variable: ×××
のエラーが出ました。
Undefined
とは未定義のデータですよ
という意味だと思ったのですが
コントローラーで$games
で定義をしているはずなのでどういうことか分かりませんでした。
解決方法
こちらの記事を参考にさせて頂きました。
ありがとうございます!
viewにデータを渡す時は
return view('welcome', compact('tasks'));
上記のようにcompact
で変数名を渡す必要があるみたいです。
勉強になりました。
ということで
public function index()
{
$games = Game::all();
return view('game.index', compact('games'));
}
上記のように編集することで表示ができました。
以上です。