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]
は、左のusers
がwelcome.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);
メール機能で、この書き方をしないとうまく行かないことがありました。
おわりに
以上です。
誰かの参考になれば幸いでございます。