[CakePHP] セレクトボックスの選択肢をグループ化する

実装覚え書き。

例題

楽曲と歌手のテーブルがあるとして、楽曲ごとに歌手を選ばせたい。楽曲のページに歌手のセレクトボックスを配置したとして、歌手の数が多いと目的の歌手を見つけるのが面倒だ。そこで、歌手を「英字」「あ行」「か行」といったようにグループ化してリストしたい。

歌手データの前提

  • 歌手テーブルには「id」「名前」「ふりがな」のカラムがある
  • 外国人歌手は名前カラムに英語表記の名前が入っていて、ふりがなは空
    (例: 1/Michael Jackson/空)
  • 日本人歌手は名前カラムに日本語表記の名前が入っている
    (例: 2/松田聖子/まつだせいこ)

実装

Formヘルパーのセレクト要素のオプションに入れ子にした配列を渡すことで、セレクトボックスの選択肢がグループ化される。良く出来てるね、Formヘルパー。

コントローラ

ビュー