PHP Laravel 6 おすすめ映画投稿サイト作成過程 3:詳細ページ作成編


showページの追加

recommendsディレクトリにshow.blade.phpを作成します。

コントローラー追加

ルーティングは以下の通りです。

|        | GET|HEAD  | recommends/{recommend}      | recommends.show    | App\Http\Controllers\RecommendController@show                          | web 

showメソッドで{recommend}を受け取り、show.blade.phpへ投げます。
なお、recommends/{recommend}の{recommend}にはDBのid番号が入ります。

recommend/app/Http/Controllers/RecommendController.php
 public function show(Recommend $recommend)
    {
        return view('recommends.show', compact('recommend'));
    }

showで受け取ったデータの出力方法

{{$recommend-> カラム名}}で各データを表示できます。

recommend/resources/views/recommends/show.blade.php
<table>
    <tr>
       <th>{{$recommend->title}}</th>
       <th>{{$recommend->image_file_name}}</th>
       <th>{{$recommend->url}}</th>
       <th>{{$recommend->description}}</th>
       <th>{{$recommend->Impressions}}</th>
      </tr>
</table>

リンクの作成

showページへのリンクは、以下の方法で設定できます。
なお、今回はindexページのタイトルにリンク設定しました。

recommend/resources/views/recommends/index.blade.php
<a href="{{route('recommends.show', $recommend->id)}}">{{$recommend->title}}</a>

ちなみに、以下でも同じ動作を実現できます。
この表記では、該当するデータを{recommend}としてコントローラー側で受け取っていることが分かり易い反面、ルーティングを変更した場合に機能しなくなってしまうので注意が必要です。

recommend/resources/views/recommends/index.blade.php
<a href="recommends/{$recommend->id}">{{$recommend->title}}</a>