トップページ
Laravel学習サイトLaravelやるばい

目次

つぶやきを一覧ページに表示する

今回はつぶやきを一覧ページに表示します。


アクションに記述

今回はどのアクションを使えばいいか分かりますか?

リソースコントローラーのアクションは下記でした。

つぶやきの一覧なのでアクション名は「index」です。

つぶやきはtweetsテーブルに保存していますがDBの情報を使うので今回はモデルを使います。

TweetController.phpのindexアクションを修正します。

public function index()
{
    $tweets = Tweet::all();        //この行を追加
    return view('tweet.index', compact('tweets'));       //この行を修正
}

「Tweet::all();」は「モデル名::all();」でモデルに該当するテーブルの全ての情報を取得します。

今回はtweetsテーブルの情報を取得したいのでTweetモデルを使って「Tweet::all();」と記述しました。

コントローラーからビューに変数を渡す時は「return view」の第二引数に「compact('変数')」と記述すればいいです。

それではビューにつぶやきを表示します。


つぶやきの表示

使うビューが何かを探すのに何度も使っている下記のコマンドを使います。

xxxxxx@MacBook-Pro tweet % php artisan route:list

下記の表示になります。

tweet ................. tweet.index › TweetController@index
tweet ................. tweet.store › TweetController@store
tweet/create .......... tweet.create › TweetController@create
tweet/{tweet} ......... tweet.show › TweetController@show
tweet/{tweet} ......... tweet.update › TweetController@update
tweet/{tweet} ......... tweet.destroy › TweetController@destroy
tweet/{tweet}/edit .... tweet.edit › TweetController@edit

indexアクションを使ったのでビューは「tweet.index」ですが既に作成しています。

index.blade.phpに下記の記述をします。

@foreach ($tweets as $tweet)
    {{ $tweet->body }}
@endforeach

PHPのforeach文と同じです。

PHPでは下記の書き方でした。

<?php foreach ($tweets as $tweet): ?>
<?php endforeach ?>

これをLaravel版にしているだけです。

テーブルの情報を表示する時はとりあえずforeachを使うと思って大丈夫です。

「{{ $tweet->body }}」の「{{ }}」は変数を表示する時に使います。

クロスサイトスプリプティングというハッキング対策です。

Laravelでは変数を表示したい時に「{{ }}」の中に記述しないとエラーになります。

「->body」の「body」は表示するカラム名です。

tweetsテーブルにはbodyカラムがありましたよね。

20241123_234239_tweet23.jpg
「http://localhost:8888/tweet」にアクセスしてtweetsテーブルのbodyカラムの内容が表示されていたらプログラムは完成です。

今回はここまでです。

戻る