[CakePHP]find(“list”)のセレクトボックスに空要素(選択してください)を追加

カテゴリ: CakePHP,php / author: uechoco / 2009年09月22日 10:30:00
この記事を読む時間:155くらい

CakePHP 1.2で、モデルに対してfind("list")すると、セレクトボックスに最適な配列を返してくれます。CakePHP 1.1だとgenerateList()って呼ばれていたかもしれません。この配列をそのままViewにsetしてinputタグを作ると、セレクトボックスを簡単に作ってくれますが、いわゆる「選択してください」っていう空要素を吐いてはくれません。

「選択してください」を吐くためにわざわざ配列をarray_merge()しなきゃいけないのかなって思っていたのですが、そこは親切フレームワーク。ちゃんと便利な機能があります。

どうやら、FormHelperのinput()メソッドの第2引数の$optionsに、emptyという要素を含めることで簡単に実現できるらしいです。

Controllerでこんな感じにセットして、

php:
  1. $this->set('hoge_list', $this->Hoge->find('list'));

Viewでこんな感じに使います。

php:
  1. <?php echo $form->input('hoge_id', array('options' => $hoge_list, 'empty' => '選択してください')); ?>

すると、選択ボックスの最初に以下のオプションが増えます。

HTML:
  1. <option value="">選択してください</option>

もちろん、マニュアルにも書いてありますよ。
$options[‘empty’] :: フォーム要素の自動生成 :: フォーム :: 主要なヘルパー :: マニュアル :: 1.2 Collection :: The Cookbook

フレームワークって、使い慣れると最高だけど、使い慣れないと大変ですね。

いちいち調べてたらアプリが期日までに作れねーYo!(’A`)/

がんばろっと。


コメントはまだありません »

コメントはまだありません。

この投稿へのコメントの RSS フィード。 TrackBack URI

コメントする

Copyright © 2012 うえちょこ@ぼろぐ. WP Theme created by Web Top.