LoginSignup
7
3

More than 3 years have passed since last update.

ErrorException Undefined variable: ×××の解決方法

Posted at

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で表示させる実装をしていました。

resources/views/game/index.blade.php
@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として取り出して表示させています。

app/Http/Controllers/GameController.php
public function index()
    {
        $games = Game::all();
        return view('game.index');
    }

上記がコントローラーの記述です。
Gameモデルからallで全てデータを取り出し$gamesに入れています。

この状態でindexを表示させると
ErrorException Undefined variable: ×××
のエラーが出ました。

スクリーンショット 2021-02-06 12.37.38.png

Undefinedとは未定義のデータですよという意味だと思ったのですが
コントローラーで$gamesで定義をしているはずなのでどういうことか分かりませんでした。

解決方法

こちらの記事を参考にさせて頂きました。
ありがとうございます!

viewにデータを渡す時は

return view('welcome', compact('tasks'));

上記のようにcompactで変数名を渡す必要があるみたいです。
勉強になりました。

ということで

app/Http/Controllers/GameController.php
public function index()
    {
        $games = Game::all();
        return view('game.index', compact('games'));
    }

上記のように編集することで表示ができました。

以上です。

7
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
3