CakePHPのHTMLヘルパーのnestedLinkというものを使うとネストした配列から簡単にリストタグを生成してくれます。
HtmlHelper::nestedList(array $list, array $options = array(), array $itemOptions = array(), string $tag = ‘ul’)
パラメータ:
$list (array) — リストにする要素の集合です
$options (array) — リストのタグについての HTML 属性を設定します。
$itemOptions (array) — リストアイテムのタグについての HTML 属性を設定します。
$tag (string) — リストのタグに ol か ul のどちらを使うか指定します。 公式サイト参考
上にあるように一つ目の引数はリストにしたい配列(連想配列)、二つ目の引数にはolやulタグのclassなどのHTML属性を配列で指定、三つ目の引数にはliタグのclassなどのHTML属性を配列で指定、四つ目に文字列でolタグを使うかulタグを使うかを指定します。
例1
$list = array( 'Languages' => array( 'English' => array( 'American', 'Canadian', 'British', ), 'Spanish', 'German', ) ); echo $this->Html->nestedList($list);
出力結果:
// 出力結果 (空白は省かれます) <ul> <li>Languages <ul> <li>English <ul> <li>American</li> <li>Canadian</li> <li>British</li> </ul> </li> <li>Spanish</li> <li>German</li> </ul> </li> </ul>
例2
$links = collection($estimate->repeat_billings) ->map( function ($rb) { return $this->Html->link( "定期請求", [ "controller" => "RepeatBillings", "action" => "invoice", $rb->id ] ); } ) ->toList(); ?> <?= $this->Html->nestedList($links,array(),array("class" => "my-1")) ?>
出力結果:
// 出力結果 (空白は省かれます) <ul> <li class="my-1"><a 省略 /></li> <li class="my-1"><a 省略 /></li> <li class="my-1"><a 省略 /></li> </ul>