モデルを渡してみる

前回のhome.blade.phpに現在時刻を渡してみましょう。

Route::get('/', function () {
    return view('home',['time' => (new DateTime())->format('H時i分s秒')]);
});

こんな感じにしてください。

そしたらhome.blade.phpを以下のようにしてください。

<!doctype html>
<html>
    <head>
        <title>ホーム</title>
        <meta charset="utf-8">
    </head>
    <body>
        <h1>ホーム</h1>
        ただいまの時刻は{{$time}}です。
    </body>
</html>

表示すると、

こんな感じ。

viewにモデルを渡すにはview()関数の第二引数に連想配列を渡します。

先ほどは['time' => (new DateTime())->format('H時i分s秒')]を渡しました。

このtimehome.blade.php$timeのように使えます。

連想配列のキーの名前でbladeにPHPの変数として渡されます。

 

ルートパラメーター

ルートにもパラメーターをつけることが出来ます。

たとえば/users/hota1024/ならprofile.blade.phphota1024を渡して表示する場合です。

実際に作ってみましょう。

profile.blade.phpを作成してください。内容は以下の通りです。

<!doctype html>
<html>
    <head>
        <title>{{$name}}のプロフィール</title>
        <meta charset="utf-8">
    </head>
    <body>
        <h1>{{$name}}のプロフィール</h1>
    </body>
</html>

ルートは以下のように定義します。

Route::get('users/{name}',function($name){
    return view('profile',['name' => $name]);
});

そして、http://127.0.0.1:8000/users/hota1024にアクセスすると、

おお、ちゃんと表示されました。

URLのhota1024を別の文字列にしてみても同じです(例:http://127.0.0.1:8000/users/hoge)

では先ほどのルーティングを確認してみましょう。

第一引数がusers/{name}となっています。

この{ }で囲まれた部分がパラメータ名です。

そして、第二引数の関数の引数に$nameが加わっています。

先ほどの{name}がこの$nameに渡されるわけです。

この章のまとめ

ルーティングにはviewへモデルを渡すことができる。