魔法使いの卵

WEBエンジニアの卵の成長記録

Laravel4 コントローラーからビューに変数を渡したったw

前回書いたやつをカスタマイズして

指定したビューを生成させる+コントローラーからビューに変数を渡すで!!

コントローラーから値を返すだけの方法は下記をみてなー!!


Laravel4 コントローラーを使ったハローワールドをやってみた - 魔法使いの卵

 

前回作成したコントローラーのメソッドに対して

新しく下記を追加する。

 

    public function index()                                                                                      

    {                                                                                                            

        //        return 'Helloworld';                                                                           

        $value = 'こんにちわ';                                                                                   

        return View::make('hello')->with('val',$value);                                                          

    }     

前回作成したreturnはコメントアウトして今回実装する機能だけを反映させるようにするでー!!

 

やってることはすごい簡単で直感的なかんじ

View::make('hello')

こいつはこのビューをつかうんやー!!って指定してあげてるねん。

今回の場合やとhelloってビューをつかうでー!!って指示してる。

簡単やろ?で使うビューは今回指定してるけど、それだけやとせっかく

コントローラーつかってやってるわけやし変数をビューに飛ばしてみたいとおもう。

 

次に

View::make('hello')->with('val',$value);

の説明になるねんけど、これもすごいやってることってシンプルで

ビューで指定した同じところに変数を渡しますよーってことやねん。

たったこれだけ。これだけでコントローラーがもってる変数とか配列を

指定したビューに渡すことができるねん。ごっつ簡単やない?

 

※下記は自分が勝手にイメージしてる考え方

with('val',$value);

   |   L今回渡したい変数とか配列

   L ビューで受け取る時に使う変数

 

 

したら、次はビューを作らなあかんからビューをつくろか

 

ビューの作成
次に、ユーザーデータを表示するシンプルなビューを作成をつくるで。

作る場所はapp/viewsの直下や。

touch master.blade.php

app/views/の直下でユーザ用のファイルをつくる。

touch hello.blade.php

 

ここまで大丈夫かな??

そしたらそれぞれの中身を書いていくな!!

master.blade.php

<!DOCTYPE html>
<html>
       <head>
                <meta charset="UTF-8">
                <title>
                    @yield('title')
                </title>
       </head>
       <body>
               @yield('body')
       </body>
</html>

@yield()はここに何かがくるという意味やでー!
つまり、master.blade.phpを利用しているViewがこの部分を埋めるようになっているねん!!

 

次に、hello.blade.phpビューを作成するで!!

@extends('master')

                 |     Lファイル名

       L ディレクトリ名

@section('title')

ここに処理を書く

@stop

@section('body')

ここに処理を書く

@stopi   

 

@section()は先の@yield()で要請した部分やで。
そして、@stopを書いてSectionがどこで終わるのかを決めてるねん。

 

今回はすごいシンプルにtitleに入れる部分とbodyにいれるものだけを

ここでつくようにするでー!!

 

そしたらコントローラーで飛ばした変数を

ビューで受け取ってみよか!!

@extends(master')

@section('title')

ブラウザのタブに表示させたい文言

@stop

@section('body')

{{ $val }}

@stopi 

 これみてくれたらわかると思うねんけど、

コントローラーでビューに飛ばしたいもの(with('val',$value);)を指定したものを

ビューで受け取るのは 

{{ $val }}

 

ってするだけ。

 

おどろくほどシンプルやろ?コントローラーで指定したビューに飛ばしたい文字列を

ビューで受け取るのは飛ばした文字列に$をつけるだけw

 

簡単すぎておしっこもれてもうたw

 

これでブラウザで起動してみると・・・

 

こんにちわ

 

 って表示されてたら成功やで!!

 

Laravelたんすごい・・・w