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');ルーティングしたパスにアクセスすると、一覧が表示されました。
