質問: Laravel Framework 5.6.23についての質問です。 【HelloController.php】から【index.blade.php】に$dataを受け渡す際に、 何故 return view('hello.index',['nani'=>$data]); とするのでしょうか。 【HelloController.php】にて return view('hello.index',['nani'=>$data]); を return view('hello.index',$data); に変更し、 【index.blade.php】の 「$nani」 を 「$data」 に変更すると何故エラーが起きるのでしょうか。 【HelloController.php】 ``` $data]); } } ``` 【index.blade.php】 ``` Hello/Index Blade/Index @foreach($nani as $item) {{$item}} @endforeach ```
回答: > > 【HelloController.php】にて > > return view('hello.index',['nani'=>$data]); > > を > > return view('hello.index',$data); > > に変更し、 > > 【index.blade.php】の「$nani」を「$data」に変更する > > > このように変更すると、view 関数には $data の中身が展開されて渡されます。 view 関数側ではその中身がもともと $data という名前の変数だったことが わかりません。 渡されたデータに名前がつけられないので、blade で呼び出そうとしたときに $data としても、変数が存在しない旨のエラーが出ます。 連想配列 `['nani' => $data]` の形式であれば、渡されたデータには `'nani'` と名前がつけられていますから、 blade 側で特定できるようになります。