ビューに値を引き渡す
今回は、次のようなプログラムを作ってみましょう。
- コントローラで数値を計算する (ビジネスロジック)
- ビューに計算結果値を引き渡して、HTMLで計算結果を表示する
さっそく作って行きましょう。
まずは、コントローラにメソッドを作ります。
public function calc() {
$numbers = [1,2,4];
$sum = array_sum($numbers);
return view('calc',[
'numbers' => $numbers,
'sum' => $sum
]);
}
view関数でbladeテンプレートを呼び出していますが、第2引数に連想配列を渡しています。
この連想配列の値が、bladeテンプレートに引き渡されます。
bladeテンプレート内では、渡された連想配列の要素名がそのまま変数名となって定義され、要素の値が格納されます。
つまり、$numbers変数と$sum変数がbladeテンプレート内で利用可能になります。
bladeテンプレートを書いてみましょう。
<html>
<body>
<p>
{{ implode(' + ',$numbers) }} = {{ $sum }}
</p>
</body>
</html>
{{ }} はbladeテンプレート独自の記述法です。
{{ $sum }} と記述すると、$sum変数がechoされます。
バニラなPHP(フレームワークを使わない素のPHP)の、
<?= htmlspecialchars($sum) ?>と同義です。
{{ }} を使うことで、暗黙的にhtmlspecialchars関数でサニタイズされるため、XSS(クロスサイトスクリプティング)対策になります。
今回の実装は、ビューでは一切の計算をしておらず、どのようなHTMLを作るかということだけが書かれています。
ビジネスロジックとビューが完全に分離されていると言えますね。
