Laravel初学者です。
オリジナルアプリを作成しているのでその過程を記事にしています。
理解が曖昧なところも多いため、ご指摘等ありましたらご連絡いただければ幸いです。
今回は
Missing required parameter for [×××]
が出たのでその解決方法を記録として残します。
環境
Version | |
---|---|
PHP | 7.4.14 |
Laravel | 8.24.0 |
mysql | 8.0.23 |
docker | 20.10.2 |
docker-compose | 1.27.4 |
エラー発生
データの一覧表示の「詳細」ボタンから詳細画面に遷移する実装を行った際にエラーがおきました。
public function show($id)
{
$game = Game::find($id);
return view('game.show', compact('game'));
}
上記がコントローラーの記述です。
showアクションで$game = Game::find($id);
でidから引っ張ってきたデータを$gameに入れています。
そしてreturn view('game.show', compact('game'));
viewに変数を渡して詳細画面を開くというアクションです。
<div class="table-responsive">
<table class="table table-hover">
<thead>
<tr>
<th>ボードゲーム名</th>
<th>プレイ時間</th>
<th>最小プレイ人数</th>
<th>最大プレイ人数</th>
<th>画像</th>
<th>詳細</th>
</tr>
</thead>
<tbody id="tb1">
@foreach($games as $game)
@if($game->image_path)
<tr>
<td>{{ $game->name }}</td>
<td>{{ $game->play_time }}</td>
<td>{{ $game->players_minimum }}</td>
<td>{{ $game->players_max }}</td>
<td><img src="{{ $game->image_path }}"></td>
<td class="text-nowrap">
<p><a href="{{ route('game.show') }}" class="btn btn-primary btn-sm">詳細</a></p>
</td>
</tr>
@endif
@endforeach
</tbody>
</table>
</div>
上記が一覧表示画面のviewです。
<a href="{{ route('game.show') }}" class="btn btn-primary btn-sm">詳細</a>
の記述で詳細画面に遷移しようとしています。
ここで下記のエラーが発生しました。
解決方法
こちらの記事を参考にさせていただきました。
ありがとうございます!
URLに入れるパラメーターが渡せていないことが原因
とのことです。
<a href="{{ route('game.show', $game->id) }}" class="btn btn-primary btn-sm">詳細</a>
上記のようにパラメーターを渡してあげることで解決しました。
以上です。