前回「Laravel5入門。ルート、コントローラー、ビューの基本的な使い方」でとりあえずビューを表示することが出来ました。
では、このビューにデータを渡したいときはどうすればいいのでしょうか。
ビューに変数を渡す方法
前回作成したビューにちょっと手を加えます。
1 2 3 4 5 6 7 |
<html> <head> </head> <body> <h1>ようこそ <?php echo $name; ?> さん。お問合せ画面です</h1> </body> </html> |
に変更して、ContactController内で$nameに変数をセットしてビューに渡せるようにしてみましょう。
ContactController内のindexメソッドを編集します。
app/Http/controllers/WelcomeControllers.php
1 2 3 4 5 |
public function index() { $name = "田中太郎"; return view('contact')->with('name',$name); } |
$name変数に文字列を格納して、view()メソッドに->with()メソッドをつなげて変数をビューに渡すというやり方です。
これでhttp://XXX/contactにアクセスすると、「ようこそ 田中太郎さん。お問合せ画面です」と表示されるようになります。簡単ですね。
上のケースでは
1 |
<?php echo $name ;?> |
を使って変数を表示させていましたが、bladeテンプレートを使っている場合は
1 |
ようこそ {{$name}} さん。お問合せ画面です |
と書き換えることも可能です。変数を{{}}で囲むだけでechoしてくれて、しかもエスケープまでしてくれます。
ただし、この記法を使うにはファイル拡張子を.phpではなく、.blade.phpにして置かなければなりません。
Bladeテンプレートを使うとlaravelに備わっている様々な便利な機能を使うことができます。ビューファイルの拡張子は基本.blade.phpを使うようにしておきましょう。
詳しいBladeテンプレートの機能は公式サイトを参考に。
ビューに配列を渡す方法
上の例では変数を一つだけ渡しましたが、2つ以上渡したいときは配列を渡すことができます。
app/Http/controllers/WelcomeControllers.php
1 2 3 4 5 6 7 |
public function index() { return view('contact')->with([ "first_name" => "田中", "last_name" => "太郎" ]); } |
ビューの方は
1 |
ようこそ {{$first_name}}{{$last_name}}さん。お問合せ画面です |
に書き換えてください。ブラウザをリフレッシュしてみると表示はそのままですね。うまく配列でデータを渡せています。
その他のデータの渡し方
データの渡し方には他の方法もあります。
app/Http/controllers/WelcomeControllers.php
1 2 3 4 5 |
public function index() { $name = "田中太郎"; return view('contact',compact('name')); } |
複数のデータを渡したいときは
1 2 3 4 5 6 |
public function index() { $first_name = "田中"; $last_name = "太郎"; return view('contact',compact('first_name','last_name')); } |
といったかんじです。
どの方法を使って変数を渡すかは個人の好みでどれでもいいです。個人的にはcompactを使ったほうがすっきりしていいかなと思います。
詳しいデータの渡し方は公式サイトを確認して下さい。
以上。ビューにデータを渡す方法でした。