すでにコントローラでコメントの一覧を取得してダンプすることはできたので,ここでは一覧をビューに渡して表示する機能を実装します.具体的には resources/views ディレクトリに comments ディレクトリを作成し,その中に index.blade.php を作成することになります.
その前に,/dashboard のビューに該当する resources/views/dashboard.blade.php を確認すると,すでにビューがレイアウト化されていることが分かります.
resources/views/dashboard.blade.php
<x-app-layout>
<x-slot name="header">
<h2 class="font-semibold text-xl text-gray-800 leading-tight">
{{ __('Dashboard') }}
</h2>
</x-slot>
<div class="py-12">
<div class="max-w-7xl mx-auto sm:px-6 lg:px-8">
<div class="bg-white overflow-hidden shadow-sm sm:rounded-lg">
<div class="p-6 text-gray-900">
{{ __("You're logged in!") }}
</div>
</div>
</div>
</div>
</x-app-layout>
上の dashboard.blade.php をコピーして index.blade.php の雛形を作成します.なお,このファイルは resources/views に comments ディレクトリを作成してその中に設置してください.
resources/views/comments/index.blade.php
<x-app-layout>
<x-slot name="header">
<h2 class="font-semibold text-xl text-gray-800 leading-tight">
{{ __('Comments') }}
</h2>
</x-slot>
<div class="py-12">
<div class="max-w-7xl mx-auto sm:px-6 lg:px-8">
<div class="bg-white overflow-hidden shadow-sm sm:rounded-lg">
<div class="p-6 text-gray-900">
{{ __("コメント一覧ページです!") }}
</div>
</div>
</div>
</div>
</x-app-layout>
コントローラを次のように書き換えて,comments フォルダの index.blade.php ビューを呼び出すようにします.
app/Http/Controllers/CommentController.php
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Models\Comment;
class CommentController extends Controller
{
public function index()
{
$comments = Comment::get();
// dd($comments);
return view('comments.index')
->with('comments', $comments);
}
}
ログインした状態で /comments にアクセスすると,次のような結果になるはずです.レイアウト化されているので,コメント一覧ページの雛形から Dashboard に移動したり,ログアウトの機能なども利用できます.
コントローラからビューに comments
オブジェクト(一覧のデータ)が渡されているので,これを箇条書きとして表示するようにビューを変更します.
resources/views/comments/index.blade.php
<x-app-layout>
<x-slot name="header">
<h2 class="font-semibold text-xl text-gray-800 leading-tight">
{{ __('Comments') }}
</h2>
</x-slot>
<div class="py-12">
<div class="max-w-7xl mx-auto sm:px-6 lg:px-8">
<div class="bg-white overflow-hidden shadow-sm sm:rounded-lg">
<div class="p-6 text-gray-900">
<ul>
@foreach ($comments as $comment)
<li>{{ $comment->title }}</li>
@endforeach
</ul>
</div>
</div>
</div>
</div>
</x-app-layout>
もう一度 /comments ページを表示すると,コメントのタイトルが一覧で表示されていることがわかります.ただし,<ul> タグによる箇条書きを指定しましたが,行頭の箇条書き記号が表示されていないことにも注意してください.これは Tailwind CSS を利用しているためです.Tailwind CSS を使ったスタイリングは後のステップで行います.