Laravelのデータ受け渡しで、コントローラで配列型の変数を渡した時に、ビューでそのデータを受け取ったり表示する時に迷うことが多いので改めてまとめてみた。
結論
・コントローラ側では$配列名
・ビュー側では$配列の中のキー名
となる。
public function media(Request $request)
{
$array = [
'key1' => 'value1',
'key2' => 'value2',
'key3' => 'value3',
];
return view('xxx', $array);
}
{{$key1}}
▼ブラウザの表示
エラー|配列名は指定できない
ビュー側で配列名は指定できない。配列名の変数を指定するとエラーになる。
{{$array}}
ErrorException (E_ERROR)
Undefined variable: 指定した配列名 (View: /app/resources/views/xxx.blade.php)
つまり、コントローラからビューに配列データを渡した時、渡されるのは配列の中身のみとなる。
ビューに渡されるデータ
コントローラで渡すデータに配列を指定するのは以下と同じになる。
public function media(Request $request)
{
$array = [
'key1' => 'value1',
'key2' => 'value2',
'key3' => 'value3',
];
return view('xxx', $array);
}
↓↑同じ
public function show(Request $request)
{
return view('xxx', ['key1' => 'value1', 'key2' => 'value2', 'key3' => 'value3']);
}