こちらのページの続きです。
Laravel で MariaDB の CRUD (その 2)
詳細ページを作成します。
- ルーティングを確認 > articles.show があることを確認
- 一覧ページに詳細ページへのリンクをつける
- show アクションの編集
- 詳細ページのビューを作成
- サーバーを起動してブラウザーで確認
php artisan route:list
$ php artisan route:list
+--------+-----------+-------------------------+------------------+-------------------------------------------------+------------+
| Domain | Method | URI | Name | Action | Middleware |
+--------+-----------+-------------------------+------------------+-------------------------------------------------+------------+
| | GET|HEAD | / | | Closure | web |
| | GET|HEAD | api/user | | Closure | api |
| | | | | | auth:api |
| | GET|HEAD | articles | articles.index | App\Http\Controllers\ArticlesController@index | web |
| | POST | articles | articles.store | App\Http\Controllers\ArticlesController@store | web |
| | GET|HEAD | articles/create | articles.create | App\Http\Controllers\ArticlesController@create | web |
| | GET|HEAD | articles/{article} | articles.show | App\Http\Controllers\ArticlesController@show | web |
| | PUT|PATCH | articles/{article} | articles.update | App\Http\Controllers\ArticlesController@update | web |
| | DELETE | articles/{article} | articles.destroy | App\Http\Controllers\ArticlesController@destroy | web |
| | GET|HEAD | articles/{article}/edit | articles.edit | App\Http\Controllers\ArticlesController@edit | web |
+--------+-----------+-------------------------+------------------+-------------------------------------------------+------------+
resources/views/articles/index.blade.php
{{-- layoutsフォルダのapplication.blade.phpを継承 --}}
@extends('layouts.application')
{{-- @yield('title')にテンプレートごとにtitleタグの値を代入 --}}
@section('title', '記事一覧')
{{-- application.blade.phpの@yield('content')に以下のレイアウトを代入 --}}
@section('content')
<table>
@foreach ($articles as $article)
<tr>
<td>{{$article->title}}</td>
<td>{{$article->body}}</td>
<td><a href="/articles/{{$article->id}}">詳細を表示</a></td>
</tr>
@endforeach
</table>
@endsection
app/Http/Controllers/ArticlesController.php
// 略
public function show($id)
{
// 引数で受け取った$idを元にfindでレコードを取得
$article = Article::find($id);
// viewにデータを渡す
return view('articles.show', ['article' => $article]);
}
// 略
resources/views/articles/show.blade.php
{{-- layoutsフォルダのapplication.blade.phpを継承 --}}
@extends('layouts.application')
{{-- @yield('title')にテンプレートごとの値を代入 --}}
@section('title', '記事詳細')
{{-- application.blade.phpの@yield('content')に以下のレイアウトを代入 --}}
@section('content')
<h1>{{$article->title}}</h1>
<p>{{$article->body}}</p>
<br><br>
<a href="/articles">一覧に戻る</a>
@endsection
php artisan serve
確認したバージョン
$ php artisan --version
Laravel Framework 10.37.3