[CakePHP]find(“list”)のセレクトボックスに空要素(選択してください)を追加
CakePHP 1.2で、モデルに対してfind("list")すると、セレクトボックスに最適な配列を返してくれます。CakePHP 1.1だとgenerateList()って呼ばれていたかもしれません。この配列をそのままViewにsetしてinputタグを作ると、セレクトボックスを簡単に作ってくれますが、いわゆる「選択してください」っていう空要素を吐いてはくれません。
「選択してください」を吐くためにわざわざ配列をarray_merge()しなきゃいけないのかなって思っていたのですが、そこは親切フレームワーク。ちゃんと便利な機能があります。
どうやら、FormHelperのinput()メソッドの第2引数の$optionsに、emptyという要素を含めることで簡単に実現できるらしいです。
Controllerでこんな感じにセットして、
php:
-
$this->set('hoge_list', $this->Hoge->find('list'));
Viewでこんな感じに使います。
php:
すると、選択ボックスの最初に以下のオプションが増えます。
もちろん、マニュアルにも書いてありますよ。
$options[‘empty’] :: フォーム要素の自動生成 :: フォーム :: 主要なヘルパー :: マニュアル :: 1.2 Collection :: The Cookbook
フレームワークって、使い慣れると最高だけど、使い慣れないと大変ですね。
いちいち調べてたらアプリが期日までに作れねーYo!(’A`)/
がんばろっと。