LaravelのBladeに変数を渡す方法(withメソッド、compact関数)
生徒
「LaravelのBladeテンプレートにデータを渡す方法が知りたいです。どうやって変数を使うんでしょう?」
先生
「Bladeに変数を渡すには主に2つの方法があります。withメソッドとcompact関数です。これらを使うと、コントローラからビューにデータを渡せますよ。」
生徒
「具体的にどう使うのか、例を見ながら教えてください!」
先生
「はい、それでは詳しく説明しますね!」
1. Bladeに変数を渡すとは?
LaravelのBladeは、画面の見た目(ビュー)を作る仕組みです。
コントローラで処理したデータをBladeに渡して画面に表示したいとき、変数を渡す必要があります。
この「変数を渡す」というのは、簡単に言うとコントローラからBladeへデータを届けることです。
例えば、ユーザー名や商品情報などを画面に見せるときに使います。
2. withメソッドで変数を渡す方法
コントローラの中でビューを返すときに、withメソッドを使って変数を渡せます。with('変数名', 値) の形で書きます。
public function show()
{
$name = '太郎';
return view('welcome')->with('userName', $name);
}
この例では、$name の値「太郎」を、ビューの中で $userName という名前で使えるようにしています。
Bladeの中で変数を表示するときは、{{ $userName }} と書きます。
<p>こんにちは、{{ $userName }}さん!</p>
3. withメソッドを連続で使う方法
複数の変数を渡したい場合は、withメソッドを続けて書くこともできます。
public function show()
{
$name = '太郎';
$age = 25;
return view('welcome')->with('userName', $name)->with('userAge', $age);
}
この場合、ビューの中で $userName と $userAge を使えます。
4. compact関数で変数を渡す方法
もう一つよく使う方法は、PHPのcompact関数を使う方法です。
変数名の文字列を渡すと、それらの変数をまとめて配列にしてくれます。
public function show()
{
$name = '太郎';
$age = 25;
return view('welcome', compact('name', 'age'));
}
この書き方では、ビューの中で $name と $age をそのまま使えます。
compact('name', 'age') は、['name' => $name, 'age' => $age] と同じ意味です。
5. withメソッドとcompact関数の違い
どちらも変数をビューに渡す方法ですが、
withメソッドは「変数名を自由に変えて渡せるのが特徴です。
例えばコントローラの変数名と違う名前でビューに渡せます。
一方、compact関数は元の変数名をそのまま使って渡すのが基本です。
初心者のうちは、まとめて複数の変数を渡すときはcompactを使うと書きやすく、コードもスッキリします。
6. Bladeで変数を使う基本ルール
Bladeの中で変数を表示するときは、必ず {{ $変数名 }} と書きます。
これはHTMLの中にPHPの値を安全に埋め込む書き方です。
例えば:
<p>ユーザー名は {{ $name }} です。</p>
Bladeの変数は、渡した名前と同じ名前で使います。
もしコントローラで with('userName', $name) と渡したら、ビューでは {{ $userName }} と使いましょう。
7. 変数を渡す時のよくある疑問
Q. 変数をたくさん渡したい場合は?
→ compact関数でまとめて渡すか、withメソッドを連続で使います。
Q. 変数名は変えられますか?
→ withメソッドなら自由に変えられます。compactは元の名前のまま渡します。
Q. Bladeの中で変数が使えない場合は?
→ 変数名の渡し忘れや名前間違いが多いので、コントローラの渡し方とBladeの使い方をもう一度確認しましょう。
8. 大切なポイント
- コントローラからビューにデータを渡すときは
withメソッドかcompact関数を使う。 withは変数名を自由に設定可能。compactは変数名をそのまま使う。- Bladeでは
{{ $変数名 }}で変数を安全に表示できる。 - 複数の変数を渡す場合は
compactがコードがスッキリしておすすめ。 - 変数が正しく渡せているか、名前の確認をしっかりする。
まとめ
LaravelのBladeテンプレートに変数を渡す方法として、withメソッドとcompact関数をどのように使い分ければよいか、 今回の記事でじっくりと見ていきました。改めて振り返ってみると、Bladeに変数を渡す仕組みはとてもシンプルでありながら、 実際のアプリ開発では頻繁に登場するため、確実に理解しておきたい基礎知識です。 コントローラからビューへデータを渡す流れはLaravelのMVC構造の中でも特に中心的な部分であり、 データ表示やフォーム入力値の反映、一覧ページの表示など、あらゆる場面で役立ちます。
また、withメソッドによる柔軟な変数名の指定は、表示名を自由に変えたい場合に有効で、 compact関数は複数の変数をまとめて渡す場面でコードを簡潔にできる点が魅力です。 特に、変数の数が増えるとビュー側で扱うデータも複雑になりがちですが、 compactによって配列を自動生成する仕組みを利用することで、スッキリとしたコントローラを維持できます。 Laravelのコードの読みやすさはこうした細かな設計思想によって支えられていることがよくわかります。
さらに、Bladeテンプレート側での変数表示には必ず{{ }}構文を使うという基本も忘れてはいけません。
この構文はXSS対策も兼ねているため、安全なアプリケーションを作るための重要なポイントでもあります。
LaravelのBladeは非常に直感的で、テンプレートエンジンとしても扱いやすいため、変数を正しく渡せるようになると、
サイトの構造を整えたり、柔軟に画面を作ったりする幅が広がります。
以下に、今回の記事内容を総合したサンプルコードをまとめておきます。 withメソッドとcompact関数の両方を使い分けるときのイメージをつかむ役に立つはずです。
■ withメソッドとcompact関数の併用例
public function profile()
{
$name = '花子';
$age = 30;
$city = '東京';
// withで名前を変更しつつ、compactで複数の変数もまとめて渡す
return view('user.profile')
->with('displayName', $name)
->with('currentCity', $city)
->with(compact('age'));
}
■ Blade側での表示例
<h1>{{ $displayName }}さんのプロフィール</h1>
<p>年齢:{{ $age }} 歳</p>
<p>現在地:{{ $currentCity }}</p>
このように、コントローラ側で柔軟に変数名を調整しつつ、Blade側では直感的にデータを扱えます。 特に実務では「表示用の名前と処理用の名前を分けたい」という場面も少なくないため、 withメソッドの使い方を理解しておくと非常に便利です。 また、compactによってまとめて渡したい変数があるときも見通しがよくなり、 コードの統一感も保ちやすくなります。
さらに細かい点として、Bladeで変数が表示されない場合は、 コントローラから正しく変数が渡っているかを確認し、 変数名の入力ミスや、渡した名前とBlade側で使っている名前が一致しているかを見直すことで、 多くのトラブルを解決できます。 Laravelは仕組みが明確なので、慣れるとこうした問題点もすぐに判断できるようになるでしょう。
変数を渡す技術はシンプルですが、Laravelアプリケーションでは必ず必要になる部分です。 小さな動作でも確実に理解しておくことで、複雑な画面やデータ連携が必要なページを作るときにも 迷わず対応できるようになります。 今後、Bladeの繰り返し構文や条件分岐と組み合わせることで、よりダイナミックな表示処理が可能となり、 Laravelによる開発の楽しさも一段と増していきます。
生徒
「withメソッドとcompact関数の違いがようやくわかりました!両方使えると便利ですね。」
先生
「その通りです。Laravelでは状況に応じて方法を選ぶことで、より読みやすく整ったコードになりますよ。」
生徒
「Blade側で変数を表示する書き方もシンプルで使いやすいと思いました。」
先生
「Bladeはとても直感的なので、慣れていくともっと便利さを実感できますよ。」
生徒
「これなら複数の変数を扱う画面も怖くないです!次は条件分岐や繰り返しも練習してみます。」
先生
「いいですね。Bladeを自由に扱えるようになると、Laravel開発が一気に楽しくなりますよ。」