データの渡し方の3つを紹介していきます。また、実際にLaravelでも表示してみます。
事前準備
わかりやすくするために、Laravelプロジェクトで最初にコントローラーとビューを作成しておきます。(データの渡し方だけ知りたい人は本題の方へ飛ばしてください。)
①controllerの作成
まずは、controllerを作成する。プロジェクトのworkspaceに入って、artisanコマンドで適当なcontrollerを作成する。
controllerの作成に成功すると、app/http/Controllers/の中に、作ったcontrollerができているはずだ。
controllerを作成したら、アクションを追加して、②で作成するviewを返すように設定しておこう。
②viewの作成
controllerを作ったら今度はviewの作成だ。
resources/views/の中に、practice.blade.phpを作成する。VScodeで普通に右クリックしてファイルを作成だ。
blade作成してくれるコマンドって何でないんだろう。
③ルーティングする。
後は、ルーティングだ。/practiceにアクセスしたら、①で作成したcontrollerにアクセスするように記述。
ルーティングはroutes/web.phpに記述していく。
最新のLaravel8だと、ルーティングの書き方が変わったぽくて、名前空間まで書く必要があるっぽい。名前空間書かずに、アクセスすると以下のようなエラーがでちゃう。
こっから本題。
配列で渡す
日本語版ドキュメントをチェックすると、最初に配列で渡すことが書かれている。view関数にキーと値をセットして、viewに送ろう。view側(LaravelだとBladeというエンジンを使用)では、キーを書くことで値が表示される。
では、準備で作成したcontrollerに配列を用意してみる。
今度は、view側にcontrollerで設定したキー(この場合ramen)を書いていく。
viewの記述が終わったら、/practiceにアクセスまたは更新しよう。うまく配列で設定された値が表示されるはずだ。
withで渡す
次はwithメソッド。これも、日本語版ドキュメントに記述がある。
withメソッドは、リレーション関係の時によく使うメソッド。(今は意味わからなくてもよい。)
withメソッドの中身は、vendor/laravel/framework/src/illuminate/database/eloquentの中にある。
読んでも意味わからんので、自分のような初心者がvendorを覗きにいくのはまだ早い。
ではこれもcontrollerに記述しよう。さっきの配列は消しておきます。
view関数の後に→を追加して、withメソッドを記述。そこに配列と同じようにkeyと値をセットする。
書けたら、/practiceにアクセスまたは更新。
compactで渡す
最後に、compact。
compacで渡すのが結構便利。compactはLaravelではなく、PHPの配列を作ってくれる関数だ。(LaravelはPHPのフレームワークだから当然PHPの関数は使える)
上の説明によると、compactメソッドは、変数名を突っ込めば、その変数名と値から配列を作成してくれるモノだ。
最初に、変数に値を突っ込み。後は、その変数だけ送ればよい。
どの送り方でもいいじゃないかと思うかもしれないが、データを複数送る場合、compactの方がすっきりする。
配列やwithは一々値とkeyを全て書かなければならないが、compactだと変数だけですむので便利。
compact便利。
まとめ
結果的にどの方法で渡してもよいが、個人的に一番わかりやすいのはcompact。というかだいたいのサイト見てもcompactをオススメしてる。可読性(コードの読みやすさ)が上がるからかな。後、コード書く量そもそも少ないので楽。
viewに用意されるのは、配列で渡した時のkey名だということを押さえておくとよい。