ホーム > Laravel > LaravelでViewに対してデータを送る方法
Laravel

LaravelでViewに対してデータを送る方法

いつもご利用ありがとうございます。
この記事には広告が掲載されており、その広告費によって運営しています。

Laravel で View に対してデータを送る方法について、まとめました

はじめに

この記事の内容は現在の Laravel 11 時点でも変更はありません。

Laravel 7 以前はルーティング(web.php)の書き方が本記事とは違います。

メインである、コントローラーの記述に関しては問題ありません。

View に対してデータを送る方法

コントローラーの書き方

    public function index()
    {
        $users = User::all();
        return view('welcome',['users'=>$users]);
    }

このように書くと resources/views/welcome.blade.php$users という変数を使うことができるようになります。

view('welcome')は、ベースの URL がresources/views/と定められているため、そこからの相対パスで指定できます。

['users'=>$users]は、左のuserswelcome.blade.phpで使える変数名で、$usersで取得できます。

['a'=>$users]であれば、$aで使えるということです。

以上が本題の結論ですが、以下では実際に1ページを作成する手順に沿って解説していきます。

View でデータを使うまでの手順

1. ルーティングを書く

routes/web.php

use App\Http\Controllers\HomeController;
Route::get('/', [ HomeController::class, 'index']);

ルーティングが分からない人は、→ Laravel8 のルーティングの基本的な書き方

Laravel 7 以前の人は、 → Laravel 6、Laravel 7 のルーティングの書き方。まずこの形を覚えよう。

2. コントローラーを作成する

コマンド

php artisan make:controller HomeController

app/Http/Controllers/HomeController が作成されます

3. コントローラーに記述をする

ここでは、users のデータを取得する例で説明します。

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Models\User;

class HomeController extends Controller
{
    public function index()
    {
        $users = User::all(); //データを取得
        //resources/views/welcome.blade.phpを指定
        return view('welcome',['users'=>$users]);
    }
}

4. ビューに記述する

resources/views/welcome.blade.php

$usersは、コレクションと呼ばれる型で、感覚としては配列に近い使い方ができます。

このデータを扱う場合は、foreachなどで回す必要があります。

<div>
  @foreach($users as $user)
  <div>{{ $user->name }}</div>
  @endforeach
</div>

→ Laravel で foreach を使って一覧を表示する方法

省略した書き方

return view('welcome',['users'=>$users]);

の書き方は別の書き方でも同様に実装することが可能です。

compact()を使う(推奨)

return view('welcome',compact('users'));

自分はこれが一番良いと思っています。

複数渡す時は、

return view('welcome',compact('users','posts'));

with を使う

return view('welcome')->with('users',$users);

メール機能で、この書き方をしないとうまく行かないことがありました。

おわりに

以上です。

誰かの参考になれば幸いでございます。

フィードバックのお願い
この記事のフィードバックがありましたらYoutubeの適当な動画にコメントしていただいたり、お問い合わせからご連絡ください。