ErrorException Undefined variable: ×××의 해결 방법

Laravel 초학자입니다.
오리지널 앱을 작성하고 있으므로 그 과정을 기사로 하고 있습니다.

이해가 모호한 곳도 많기 때문에, 지적 등 있으면 연락 주시면 감사하겠습니다.

이번에는ErrorException Undefined variable: ×××가 나왔으므로 그 해결 방법을 기록으로 남깁니다.

환경





버전


PHP
7.4.14

라라벨
8.24.0

mysql
8.0.23

도커
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에서 하나씩 $game로 꺼내 표시합니다.

app/Http/Controllers/GameController.php
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 로 변수명을 건네줄 필요가 있는 것 같습니다.
공부가 되었습니다.

그래서

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

위와 같이 편집하여 표시할 수 있었습니다.

이상입니다.

좋은 웹페이지 즐겨찾기