I love iPhone, Android, Cocos2d-x
CakePHP HTMLヘルパーで select タグを表示する
HTML ヘルパーで select タグを表示したかったが、
マニュアルを見ても書かれていなかったので、調べたメモ
/cake/libs/view/helpers/html.php
を見ると selectTag というメソッドがり、
/** * Returns a formatted SELECT element. * * @param string $fieldName Name attribute of the SELECT * @param array $optionElements Array of the OPTION elements (as 'value'=>'Text' pairs) to be used in the SELECT element * @param mixed $selected Selected option * @param array $selectAttr Array of HTML options for the opening SELECT element * @param array $optionAttr Array of HTML options for the enclosed OPTION elements * @param boolean $show_empty If true, the empty select option is shown * @param boolean $return Whether this method should return a value * @return string Formatted SELECT element * @access public */ function selectTag($fieldName, $optionElements, $selected = null, $selectAttr = array(), $optionAttr = null, $showEmpty = true, $return = false) {
と定義されている。
よく指定しそうな引数は
- $fileName にフィールド名
- $optionElements に option タグに表示するもの配列
- $selected にデフォルトで選択状態にする $optionElements のキー
- $showEmpty は一番最初の option タグを空 <option value=”"> </option> で表示するか
コントローラで
$this->set('questions', array( '卒業した学校名', '好きなチーム名', 'ペットの名前', '両親の旧姓', '免許証の下4桁', '好きな映画の題名', ) );
として
<?php echo $html->selectTag('Post/question', $questions, null, null, null); ?>
とすればOK.
よく「選択してください」などの文言が option タグの先頭にある場合があるが、
そのように表示したい場合は
array( '選択してください', '卒業した学校名', '好きなチーム名', 'ペットの名前', '両親の旧姓', '免許証の下4桁', '好きな映画の題名', )
として、$html->selectTag の6番目の引数に false を指定すれば空の option タグが表示されなくなる。
必須選択にしたい場合は「選択してください」の値が0なので、0以外の数字でバリデーションチェックすればいい。
関連する投稿
2 comments
コメントをどうぞ
Additional comments powered by BackType
[...] では 「CakePHP HTMLヘルパーで select タグを表示する」のエントリで書いたように結構面倒だったので新しい Form [...]
3syringe…
…