初めてのLaravel 5.1 : (4) ビューへ値を渡す

前回は、PagesControllerを作成し、そこから aboutビューを行いました。しかし、aboutビューは単なる静的なHTMLでした。今回は コントローラーから渡された値を表示するように、ビューを修正します。

シナリオ

  • PagesControllerから aboutビューへ名前と苗字を引き渡す
  • aboutビューで名前と苗字を表示する


Controller

PagesController.phpの aboutメソッドを下記のように修正します。
view関数の第2引数に配列を渡すことで、viewに変数を渡すことができます。

<?php // app/Http/controllers/PagesController.php
namespace AppHttpControllers;

// ...

class PagesController extends Controller {
    public function about()
    {
        // 配列に値をセット
        $data = [];
        $data["first_name"] = "Luke";
        $data["last_name"] = "Skywalker";

        // view関数の第2引数に配列を渡す
        return view('pages.about', $data);        

        /* 以前のコード
        return view('pages.about');
        */
    }

    // ...
}

PHPの compact関数を使って、下記のように書くこともできます。
compact関数はローカル変数から配列を生成してれます。
こちらの方がいろいろと応用範囲が広そうです。

<?php // app/Http/controllers/PagesController.php
namespace AppHttpControllers;

// ...

class PagesController extends Controller {
    public function about()
    {
        // 変数に値をセット
        $first_name = "Luke";
        $last_name = "Skywalker";

        // view関数の第2引数に compact関数を使う
        return view('pages.about', compact('first_name', 'last_name'));        
    }

    // ...
}

View

コントローラから渡された変数を表示するように about.blade.php を修正します。
まずは、PHPのタグを使って変数を表示してみます。

<!-- resources/views/pages/about.blade.php -->

...

<body>
    <h1>About Me: <?= $first_name ?> <?= $last_name ?></h1>
</body>

http://localhost:8000/about にアクセスして表示を確認してみます。
“About Me: Luke Skywalker” と表示されれば成功です。
コントローラから渡された変数が使えたことがわかります。


Blade テンプレート

次に Laravelの テンプレートエンジンである bladeの書式を使って変数を表示してみます。
about.blade.php を以下のように修正します。

resources/views/pages/about.blade.php

...

<body>
    <h1>About Me: {{ $first_name }} {{ $last_name }}</h1>
</body>

bladeではPHPで評価した結果を表示する場合、ダブルカーリー {{ }} で囲みます。

http://localhost:8000/about にアクセスして表示を確認してみます。
“About Me: Luke Skywalker” と表示されれば成功です。


まとめ

以下のことが出来るようになりました。

  • Controller から View へ変数を渡す
  • View で変数を表示する
  • Blade のダブルカーリーを使う

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中