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…
…