ビューに値を引き渡す

今回は、次のようなプログラムを作ってみましょう。

  1. コントローラで数値を計算する (ビジネスロジック)
  2. ビューに計算結果値を引き渡して、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を作るかということだけが書かれています。
ビジネスロジックとビューが完全に分離されていると言えますね。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です