コントローラーからビューへ値を渡す

メモ:

Laravel 5.7 で、コントローラで値をセットした変数をビューへ渡す方法についてまとめます。

ビューの作成

ビューの中で、受け取った値を使用したい場合 {{ 変数 }} と記述します。

<!DOCTYPE html>
<html lang="{{ app()->getLocale() }}">
    <head>
        <meta charset="utf-8">
        <title>{{ $title }}</title>
    </head>
    <body>
        <h1>{{ $heading }}</h1>
        <p>{{ $content }}</p>
    </body>
</html>

ビューの中では、キーを指定することで値を表示することができます。

view 関数の引数に指定する

一つ目の方法は、 コントローラーでビューを呼び出す時の view ヘルパ関数の引数に変数を渡す方法です。

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class HelloController extends Controller
{
    //
    public function getIndex() {
        $data = array();

        $data['title'] = 'Laravel View Sample';
        $data['heading'] = 'Hello,World!';
        $data['content'] = '値の渡し方';

        return view('hello',$data);
    }
}

ちなみに、次のように書くこともできます。

return view('hello',['title' => 'Laravel View Sample','heading' => 'Hello,World!','content' => '値の渡し方']);

ブラウザから /hello/index へアクセスし Hello, World! が表示されることを確認します。(ここでは、 http://homestead.test/hello/index)

view 関数の引数に指定する

正しく表示されれば、成功です。

view クラスの with メソッドで値を渡す

もう一つの方法が、 view ヘルパ関数で返される view インスタンスの with メソッドで変数を渡す方法です。

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class HelloController extends Controller
{
    //
    public function getIndex() {
        $data = array();

        $data['title'] = 'Laravel View Sample()';
        $data['heading'] = 'Hello,World!';
        $data['content'] = '値の渡し方(with編)';

        return view('hello')->with($data);
    }
}

ちなみに、次のように書くこともできます。

return view('hello')->with('title','Laravel View Sample');

とか

return view('hello')->with(['title' => 'Laravel View Sample','heading' => 'Hello,World!','content' => '値の渡し方']);

ブラウザから /hello/index へアクセスし Hello, World! が表示されることを確認します。(ここでは、 http://homestead.test/hello/index)

view クラスの with メソッドで値を渡す

正しく表示されれば、成功です。