bladeでforeach文を使う(@foreachディレクティブ)

HTML内にPHPのforeach文を書く場合は、次のように書きます。

<table>
  <?php foreach($items as $item) { ?>
    <tr>
      <td><?= $item ?></td>
    </tr>
  <?php } ?>
</table>

bladeでは、@foreachディレクティブが用意されています。

<table>
  @foreach($items as $item)
    <tr>
      <td>{{ $item }}</td>
    </tr>
  @endforeach
</table>

@foreachディレクティブを使って一覧を表示してみましょう。
コントローラで適当な配列を用意して、それをbladeで一覧に整形します。

    public function index() {
        $colors = [
            [
                'id' => 1001,
                'name' => 'red'
            ],
            [
                'id' => 1002,
                'name' => 'blue'
            ],
            [
                'id' => 1003,
                'name' => 'yellow'
            ],
        ];

        return view('colors.index',[
            'colors' => $colors
        ]);
    }

view関数の第一引数を’colors.index’としています。
このようにすると、resources/views/colors/index.blade.phpを呼び出すことができます。
コントローラ毎にbladeを置くフォルダをまとめておくと、コントローラが増えてきた時に管理がしやすくなります。

resources/viewsフォルダの中に新たにcolorsフォルダを作って、その中にindex.blade.phpを作ります。

<html>
<body>
  <table>
    @foreach($colors as $color)
    <tr>
      <td>
        {{ $color['id'] }}
      </td>
      <td>
        {{ $color['name'] }}
      </td>
    </tr>
    @endforeach
  </table>
</body>
</html>

ルーティングを定義します。

Route::get('/colors', 'ColorsController@index');

ルーティングしたパスにアクセスすると、一覧が表示されました。

コメントを残す

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