LaravelでHTMLのunordered listを生成する2つの方法
HTML::ul
Laravelでデータを動的にリスト化する方法です。
View側にてHTML::ul()を利用することで、動的にデータをリスト化することが出来ます。
{{ HTML::ul(['engineer', 'designer', 'architect']) }}
引数として配列を渡せばリスト表示できます。ulにclass属性を追加する場合には、引数を追加することでclassを設定可能です。
{{ HTML::ul(['engineer', 'designer', 'architect'], array('class'=>'job')) }}
引数の配列を変数として、routes.phpからViewに渡してリスト化する方法は以下の通りです。
view
{{ HTML::ul($engineers, array('class'=>'job')) }}
routes
$engineers = array( 'engineer', 'designer', 'architect', ); return View::make('form')->with('engineers', $engineers);
Routes.phpからリスト化したいデータを配列でViewに渡して、HTML::ul()でリスト化すること可能。
データベースのデータをリスト化
DBのデータをリスト表示するためには、$engineersの中身をデータベースから取得して配列化すればよいことになるが、Eloquent ORMで取得できるデータの構造が基本的にオブジェクト配列になっているので、HTML::ulではなく@foreachを利用することで、オブジェクト配列を動的にリスト化することが可能。
view
<ul> @foreach ($engineers as $e) <li> {{ $e->name }} </li> @endforeach </ul>
routes
$engineers = Engineer::all(); return View::make('form')->with('engineers', $engineers);
データベースから取得したデータをリスト化する場合には、@foreachを使った方法を用いることの方が多いと思われるが、HTML::ulを使うことで、ネスト化されたunordered listを効率的に表現することができるので、合わせておぼえておきたいノウハウ。