どうもmizukiです。Laravelでコントローラからビューに複数の変数を渡す方法を色々試した結果PHPの「compact関数」を用いて渡すのが一番楽だと僕は思いました。以下コントローラとビューのテストコードです。
compact関数とは
compact
(PHP 4, PHP 5, PHP 7)
compact — 変数名とその値から配列を作成する
説明 ¶
compact ( mixed $varname1 [, mixed $... ] ) : array変数名とその値から配列を作成します。
https://www.php.net/manual/ja/function.compact.phpより引用
変数名を記述すれば配列にしてくれるので、return viewの第2引数にてこれを用いれば複数の値を簡単に渡せる。最初に変数を渡してエラーなりました。
テストコード
コントローラ
この書き方の良い点は、変数が複数あっても長くならない点だと思う。変数が1つならそのまま渡す。
public function index() { $test = [ 'msg'=>'修正されたテストメッセージ!', 'msg_test'=>'2つ目のメッセージ', ]; $test2 = 'てすとめっせーじ2'; $db_test = DB::select('select * from t_test'); return view('index',compact('test','test2','db_test')); }
ビュー
配列は 変数名['キー']で取り出す。
データベースの値はとりあえずデータ取れてるか試したかったのでprint_rで全表示
変数は 変数名で取り出せばOK
{{$test['msg']}}
{{print_r($db_test)}}
{{$test2}}
メモ
変数がたくさんある場合は「compact」を使うと楽
一つだけの場合はそのまま渡す
変数が多すぎる場合は画面の設計がおかしいかもしれないので見直す(1画面に機能詰めすぎ)
コメント