コレクション内の項目をレンダリングする


Blade

 悩み事

Bladeテンプレートでコレクション内の項目をレンダリングしたい

 解決方法

Bladeの@eachを利用します

少なくとも3つの引数を指定する必要があります:

  1. レンダリングするビューファイル名
  2. コレクション(配列等)
  3. 利用する項目名

例えば、Bladeテンプレートで以下の様なコードがある場合

Items:
@each('items.single', $items, 'item')

これは次の意味を持ちます:

Items:
@foreach ($items as $item)
    @include('items.single', ['item' => $item])
@endforeach

 アドバイス

第四引数にコレクションが空の場合に表示するものを指定する事が出来ます

Items:
@each('items.single', $items, 'item', 'items.empty')

$itemsが空の場合にitems.emptyビューがレンダリングされます
第四引数にビューではなく、文字列を指定する事も可能です

Items:
@each('items.single', $items, 'item', 'raw|There are no items')

$itemsが空の場合に次の様なHTMLが出力されます

Items:
There are no items