laravelでの詳細表示機能の実装方法

私は、今回PHP言語、フレームワークにlareavelを使いエビングハウスの忘却曲線を元に学習を効率的に行うことができるアプリを作成していきます。

1.目的

詳細表示をできるようにしより詳しい表示ができるようにする。

2.必要なもの

なし

3.手順

①web.phpに以下の内容を追記します。

<?php
use Illuminate\Support\Facades\Route;
use Illuminate\Http\Request;
/*
|--------------------------------------------------------------------------
| Web Routes
|--------------------------------------------------------------------------
|
| Here is where you can register web routes for your application. These
| routes are loaded by the RouteServiceProvider within a group which
| contains the "web" middleware group. Now create something great!
|
*/
Route::get('/', 'ItemsController@index');
//以下追記
//showアクションの追加
Route::resource('/item','ItemsController',['only' =>['create','store','show']]);
//ここまで
Auth::routes();
Route::get('/home', [App\Http\Controllers\HomeController::class, 'index'])->name('home');

②ItemsControllerに以下の内容を追記します。

        //省略
    public function show($id) {
       $item = Item::findOrFail($id);
       return view('items.show')->with('item', $item);
   }
   //省略

findOrFailは、見つからなかった場合例外を返します。

③index.blade.phpに以下の内容を追記し、詳細ページに遷移できるようにします。

@extends('layouts.app')
@section('content')
<h1>hello World</h1>
<a href="{{ url('item/create') }}" >投稿</a>
<h2>投稿されたもの</h2>
@foreach($items as $item)
//以下追記を行う
<a href="{{ action('ItemsController@show', $item->id) }}">
//ここまで
<div>{{ $item->name }}</div>
</a>
@endforeach
@endsection

ここでは、laravelのヘルパー関数であるaction関数を用いて実装を行なっています。
action関数は、指定されたコントローラアクションからURLを作成します。

また、以下のようにurl関数を用いて実装することも可能です。

<a href="{{ url('item', $item->id) }}" >
<div>{{ $item->name }}</div>
 </a>

url関数は指定されたパスへの完全なURLを生成します。

④app/resources/views/items以下にshow.blade.phpファイルを作成します。
そして作成したファイルに以下の内容を追記します。

<div>{{ $item->name }}</div>
<div>{{ $item->url }}</div>
<div>{{ $item->text }}</div>

4.まとめ

以上で詳細ページの表示機能の完成です。
以下のようになったらOKです。
ありがとうございました!!

画像1


この記事が気に入ったらサポートをしてみませんか?