データの渡し方の3つを紹介していきます。また、実際にLaravelでも表示してみます。
事前準備
わかりやすくするために、Laravelプロジェクトで最初にコントローラーとビューを作成しておきます。(データの渡し方だけ知りたい人は本題の方へ飛ばしてください。)
①controllerの作成
まずは、controllerを作成する。プロジェクトのworkspaceに入って、artisanコマンドで適当なcontrollerを作成する。
controllerの作成に成功すると、app/http/Controllers/の中に、作ったcontrollerができているはずだ。
![](https://taidanahibi.com/wp-content/uploads/52cdf87e63189c3640cc259979ec4dbe.png)
![](https://taidanahibi.com/wp-content/uploads/b04ea5e42297a417adf69c41487cc78f.png)
小文字で書いちゃったけどControllerと大文字で打った方が見やすいかも。
controllerを作成したら、アクションを追加して、②で作成するviewを返すように設定しておこう。
![](https://taidanahibi.com/wp-content/uploads/27856ea3196046726a24ce01755c16dc.png)
②viewの作成
controllerを作ったら今度はviewの作成だ。
resources/views/の中に、practice.blade.phpを作成する。VScodeで普通に右クリックしてファイルを作成だ。
blade作成してくれるコマンドって何でないんだろう。
![](https://taidanahibi.com/wp-content/uploads/944d3e3749b4f81ee52589b8c95f48d2.png)
![](https://taidanahibi.com/wp-content/uploads/955276d0ea47af3dba16d7ceade3da32.png)
![](https://taidanahibi.com/wp-content/uploads/0b9195b907ffc451800a5f7a66f1bb29.png)
③ルーティングする。
後は、ルーティングだ。/practiceにアクセスしたら、①で作成したcontrollerにアクセスするように記述。
ルーティングはroutes/web.phpに記述していく。
![](https://taidanahibi.com/wp-content/uploads/b7866faef0dcb31d23342b1907857806.png)
![](https://taidanahibi.com/wp-content/uploads/f533c3270d5eee09238815c5dc3dec58-1024x249.png)
![](https://taidanahibi.com/wp-content/uploads/fa5ec1e70f462938d0d8f35947956ca6.png)
![](https://taidanahibi.com/wp-content/uploads/045868f54175a75b5a75e02d9a26b2ac-1024x403.png)
最新のLaravel8だと、ルーティングの書き方が変わったぽくて、名前空間まで書く必要があるっぽい。名前空間書かずに、アクセスすると以下のようなエラーがでちゃう。
![](https://taidanahibi.com/wp-content/uploads/57ab3ce7c52ccd8265eb3b59e8e5123e-1024x178.png)
こっから本題。
配列で渡す
日本語版ドキュメントをチェックすると、最初に配列で渡すことが書かれている。view関数にキーと値をセットして、viewに送ろう。view側(LaravelだとBladeというエンジンを使用)では、キーを書くことで値が表示される。
![](https://taidanahibi.com/wp-content/uploads/42e484e986d7e4f7616cd6a04c15ddfe-1024x300.png)
では、準備で作成したcontrollerに配列を用意してみる。
![](https://taidanahibi.com/wp-content/uploads/f0803727445be61f6fef02233f7ca590.png)
今度は、view側にcontrollerで設定したキー(この場合ramen)を書いていく。
![](https://taidanahibi.com/wp-content/uploads/9c9ff278a0c31df931dec90693b16bdb.png)
![](https://taidanahibi.com/wp-content/uploads/24f77a3cd3b343baad1618d82415ec3c.png)
viewの記述が終わったら、/practiceにアクセスまたは更新しよう。うまく配列で設定された値が表示されるはずだ。
![](https://taidanahibi.com/wp-content/uploads/2ddac7e49f1a9a0b3afec06c41fe6421-1024x318.png)
withで渡す
次はwithメソッド。これも、日本語版ドキュメントに記述がある。
![](https://taidanahibi.com/wp-content/uploads/7c3cdd43d0f0c4162ed76f7787bc39cd-1024x177.png)
withメソッドは、リレーション関係の時によく使うメソッド。(今は意味わからなくてもよい。)
withメソッドの中身は、vendor/laravel/framework/src/illuminate/database/eloquentの中にある。
読んでも意味わからんので、自分のような初心者がvendorを覗きにいくのはまだ早い。
ではこれもcontrollerに記述しよう。さっきの配列は消しておきます。
view関数の後に→を追加して、withメソッドを記述。そこに配列と同じようにkeyと値をセットする。
![](https://taidanahibi.com/wp-content/uploads/caa5a7106da988969fca070aa5992b00.png)
書けたら、/practiceにアクセスまたは更新。
![](https://taidanahibi.com/wp-content/uploads/2ddac7e49f1a9a0b3afec06c41fe6421-1024x318.png)
compactで渡す
最後に、compact。
compacで渡すのが結構便利。compactはLaravelではなく、PHPの配列を作ってくれる関数だ。(LaravelはPHPのフレームワークだから当然PHPの関数は使える)
![](https://taidanahibi.com/wp-content/uploads/211fe9f475bac4ee3896c63c8cd577b7-1024x607.png)
上の説明によると、compactメソッドは、変数名を突っ込めば、その変数名と値から配列を作成してくれるモノだ。
最初に、変数に値を突っ込み。後は、その変数だけ送ればよい。
![](https://taidanahibi.com/wp-content/uploads/d47e16097277d4ab7c58a8ad7776395d-1024x192.png)
![](https://taidanahibi.com/wp-content/uploads/979351685cb820e134eb845577e53227.png)
![](https://taidanahibi.com/wp-content/uploads/b34c08f7fa09746c92beeb5f1e9b9f3a-1024x278.png)
![](https://taidanahibi.com/wp-content/uploads/2ddac7e49f1a9a0b3afec06c41fe6421-1024x318.png)
どの送り方でもいいじゃないかと思うかもしれないが、データを複数送る場合、compactの方がすっきりする。
配列やwithは一々値とkeyを全て書かなければならないが、compactだと変数だけですむので便利。
![](https://taidanahibi.com/wp-content/uploads/51780c7cdf29c2c4f0bee0388ab9dd10-1024x329.png)
![](https://taidanahibi.com/wp-content/uploads/1f05a18c0ada52e51bb3c8721eff1f85.png)
![](https://taidanahibi.com/wp-content/uploads/dc1c17dff9ea66c733761cacf0703b4d.png)
compact便利。
まとめ
結果的にどの方法で渡してもよいが、個人的に一番わかりやすいのはcompact。というかだいたいのサイト見てもcompactをオススメしてる。可読性(コードの読みやすさ)が上がるからかな。後、コード書く量そもそも少ないので楽。
viewに用意されるのは、配列で渡した時のkey名だということを押さえておくとよい。