Webアプリ習作#11

ツイート一覧画面の作成

DBに格納されているツイートを一覧で表示できるようにする

ルーティングの追加

routes/web.phpを編集

// ここからを削除.
//Route::get('/', function () {
//    return view('test');
//});
// ここまでを削除.
Route::get('/', 'TweetController@index'); // これを追加.
ルーティングの確認
php artisan route:list
+--------+----------+-----------------------+------+-----------------------------------------------------+--------------+
| Domain | Method   | URI                   | Name | Action                                              | Middleware   |
+--------+----------+-----------------------+------+-----------------------------------------------------+--------------+
|        | GET|HEAD | /                     |      | App\Http\Controllers\TweetController@index          | web          |
|        | GET|HEAD | api/user              |      | Closure                                             | api,auth:api |
|        | GET|HEAD | auth/twitter          |      | App\Http\Controllers\TwitterAuthController@login    | web          |
|        | GET|HEAD | auth/twitter/callback |      | App\Http\Controllers\TwitterAuthController@callback | web          |
+--------+----------+-----------------------+------+-----------------------------------------------------+--------------+
コントローラーの作成

プロジェクトディレクトリにて以下を実行

php artisan make:controller TweetController

'app/Http/Controllers/TweetController.php' が作成されるので編集

namespace App\Http\Controllers;

// ここからを追加.
use App\Models\Tweet;
// ここまでを追加.
use Illuminate\Http\Request;

class TweetController extends Controller
{
    // ここからを追加.
    public function index()
    {
        $tweets= Tweet::all()->sortByDesc('created_at');
        return view('tweets.index', ['tweets' => $tweets]);
    }
    // ここまでを追加.
}
ツイート一覧画面の作成

resources/viewsにtweetsディレクトリを作成してindex.blade.phpというファイルを作成

<!DOCTYPE html>
<html lang="ja">
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
  <meta http-equiv="x-ua-compatible" content="ie=edge">
  <title>
    ツイート一覧
  </title>
</head>

<body>

  @foreach($tweets as $tweet) 
    <div>
      <img src="{{ $tweet->user->avatar }}" width="48" height="48">
      {{ $tweet->user->name }}
      {{ $tweet->created_at->format('Y/m/d H:i') }}
    </div>
    <div>
      {!! nl2br(e( $tweet->body )) !!}
    </div>
  @endforeach

</body>

</html>
確認

http://localhost:8000/ にアクセスしてツイート一覧が表示されていることを確認