CakePHP FormHelperの使い方
FormHelper使用時の覚え書き。チェックボックスとかラジオボタンに属性を付けたりするのが厄介だったので。
FormHelperはForm->create()
からForm->end()
の中にコントロールを記述します。
日付選択コントロール
日付選択用に専用の部品が用意されています。便利ですね。
'monthNames' =>false
を指定しない場合、月の英語名(Januaryなど)が選択肢になります。
クラスを指定する場合は以下のようにします。
フォームの構成部品
以下、各種フォームの構成部品(コントロール)を出力する方法です。
セレクトボックス
value
はインデックス値です。未指定の場合は選択なしになります。
単一選択
複数選択
'hiddenField' => false
はデフォルトで生成されるinput type="hidden"
の要素を生成しないようにします。
チェックボックス
'hiddenField' => false
はデフォルトで生成されるinput type="hidden"
の要素を生成しないようにします。
チェックあり
'checked' => true
を指定します。
チェックボックス - input() メソッド
チェックボックスに<Label for="">
を使用したい場合は、input()
メソッドを使用します。
ラベルに属性を指定
ラベルにclass
などの属性を指定したい場合は、'label'
を連想配列で指定します。
外側の <div> を出力しない
Form->input()
でチェックボックスを出力すると、<div class="input checkbox"></div>
の内側に出力されます。この<div>
を出力したくない場合、以下のようにtemplates
の'inputContainer'
を指定します。
ラベルの外側に <input> を出力する
チェックボックスはラベルの内側にもなっています。ラベルの外側に<input>
を表示したい場合は以下のようにします。
または以下のようにフォーム全体で指定します。
ラベルを自前で出力する
ラベルを自前で指定したい場合は'label' => false
を指定します。そしてlabel()
でラベルを指定します。
ラジオボタン
value
はインデックス値です。未指定の場合は選択なしになります。
'hiddenField' => false
はデフォルトで生成されるinput type="hidden"
の要素を生成しないようにします。
上記の場合、値は0
,1
となります。値を任意に指定したい場合は、以下のようにラベルと一緒にvalue
も指定します。
ラベル位置の変更
ラジオボタンのラベル位置変更は$this->Form->setTemplates()
でnestingLabel
とradioWrapper
を指定します。次にsetTemplates()
するまで有効です。
また、ラベルの属性は同じラジオボタンのグループで共通になります。
テキストフィールド
ボタン
以下はSubmitボタンとフォームクリアボタンのサンプルです。