[CakePHP1.3] 秀和システムの本 メモ3 - Formヘルパー
書籍「CakePHP 1.3によるWebアプリケーション開発―オープンソース徹底活用」(秀和システム、掌田 津耶乃)のメモ その3。
Formヘルパーの利用。
Formへルパー
ビューで利用できる、フォームを自動生成する機能。
ビュー内で、準備なしに、FormHelperクラスのインスタンスが $form-> で利用可能。
ソースファイルは、cake/libs/view/helpers/form.php。
メソッド その1
$form->create( モデル名 [, 属性の連想配列 ] )
formの開始タグ文字列(<form ...>)を返す。
- モデル名
- 関連するモデル名。モデルを利用しないときには、NULL。
- 属性の連想配列
- たとえば、array( 'type' => 'post', 'action' => '.' ) など。
省略時は、method属性がpost、action属性が自分自身となる。
$form->text( 名前 [, 属性の連想配列 ] )
テキストボックスのタグ(<input type="text" ... />)の文字列を返す。
- 名前
- name属性値。
ただし、'モデル名.フィールド名' のように指定する。これを受け取るコントローラは、$data[モデル名][フィールド名] として受け取れる。
モデルを使っていないとき、適当な名前(?)。たとえば、'HelloForm.text1' など。 - 属性の連想配列
- たとえば、array( 'size' => '40' ) など。
$form->submit( キャプション [, 属性の連想配列 ] )
送信ボタンのタグ(<input type="submit" ... />)の文字列を返す。
- キャプション
- ボタンのキャプション。
- 属性の連想配列
- たとえば、array( 'name' => 'go' ) など。
$form->end( [送信ボタンのキャプション ] )
formの終了タグ(</form>)の文字列を返す。引数を指定すると、送信ボタンのタグ(<input type="submit" ... />)の文字列を前に付けて返す。
- 送信ボタンのキャプション
- ボタンのキャプション。
例
<?php //フォーム生成 echo $form->create( NULL, array( 'type' => 'post', 'action' => '.' ) ); //テキストボックス echo $form->text( 'HelloForm.text1' ); //送信ボタン echo $form->submit( '送信' ); //フォーム終了 echo $form->end(); ?>
データを受け取るコントローラのアクションメソッド。
function index() { App::import( 'Sanitize' ); $result = ""; if ( !empty( $this->data ) ) { $result .= '<pre>'; foreach( $this->data['HelloForm'] as $key => $val ) { $result .= $key .'=>'. $val; } $result .= '</pre>'; } $this->set( "result", Sanitize::stripScripts($result) ); }
メソッド その2
$form->checkbox( 名前 [, 属性の連想配列 ] )
チェックボックスのタグ(<input type="checkbox" ... />)の文字列を返す。
- 名前
- name属性値。text メソッドと同じ。
- 属性の連想配列
- たとえば、array( 'checked' => TRUE ) など。
$form->label( 関連づける名前 [ , 表示テキスト [, 属性の連想配列 ] ] )
labelのタグ文字列(<label ...>~</label>)を返す。
- 関連づける名前
- 関連づけするname属性値。checkbox メソッドなどの第1引数と同じ文字列。
- 表示テキスト
- 表示する文字列。
- 属性の連想配列
- 属性の連想配列。
$form->radio( 名前 , 値の連想配列 [, 属性の連想配列 ] )
ラジオボタンのタグ(<input type="radio" ... />)の文字列を返す。
- 名前
- name属性値。text メソッドと同じ。
- 値の連想配列
- 連想配列のキーがvalue属性値、値がテキスト。
たとえば、array( '0' => 'Windows', '1' => 'Linux', '2' => 'MacOS' ) など。
ただし、このように添字が数字の配列なら、普通の1次元配列でもよい(array( 'Windows', 'Linux', 'MacOS' )など)。 - 属性の連想配列
- たとえば、array( 'legend' => 'OS選択', 'value' => '1' ) など。
キー | 意味 |
---|---|
value | 初期選択項目のvalue属性値。値の連想配列 のキー。 |
empty | 未選択時項目を表示する(TRUE)か表示しない(FALSE)か。 |
legend | fieldset~legendで、枠線で囲む。値に文字列を指定するとキャプションの指定となる。また、値にFALSEを指定すると枠線なし。 |
label | labelタグの表示指定。表示テキストをラベルとする(TRUE)か、しない(FALSE)か。 |
separator | 各ラジオボタンのタグ(<input type="radio" ... />)の間に入れる区切り。 たとえば、'<br />' とすれば、改行区切りで表示される。 |
$form->select( 名前 , 選択肢の連想配列 [, 初期選択項目 [, 属性の連想配列 ] ] )
ラジオボタンのタグ(<input type="radio" ... />)の文字列を返す。
- 名前
- name属性値。text メソッドと同じ。
- 選択肢の連想配列
- 連想配列のキーがvalue属性値、値がテキスト。
たとえば、array( '0' => 'Windows', '1' => 'Linux', '2' => 'MacOS' ) など。
ただし、このように添字が数字の配列なら、普通の1次元配列でもよい(array( 'Windows', 'Linux', 'MacOS' )など)。 - 初期選択項目
- 初期選択項目の文字列。選択肢の連想配列 のキー。
- 属性の連想配列
- たとえば、array( 'size' => 4, 'empty' => '-- 選択してください --' ) など。
ここで、キー 'empty' は、未選択時の選択肢で、文字列を指定するとそれが表示され、 FALSE を指定すると未選択時選択肢が表示されなくなる。 また、省略あるいは TRUE なら、空白の選択肢が表示される。
未選択時選択肢を表示した場合、value属性値は ""。
メソッド その3
$form->value( 名前 )
1回前に送信したデータをビュー内で取得する。表示するときなどは、サニタイジングが必要。
- 名前
- text メソッドなどの第1引数で指定した名前文字列。
$form->hidden( 名前 [, 属性の連想配列 ] )
隠しフィールドのタグ(<input type="hidden" ... />)の文字列を返す。
$form->password( 名前 [, 属性の連想配列 ] )
パスワードフィールドのタグ(<input type="password" ... />)の文字列を返す。
$form->textarea( 名前 [, 属性の連想配列 ] )
複数行テキストのタグ(<textarea ...>~</textarea>)の文字列を返す。
- 属性の連想配列
- キー 'value' で初期表示文字列を指定する。
$form->button( キャプション [, 属性の連想配列 ] )
ボタンのタグ(<input type="button" ... />)の文字列を返す。
関連
« [CakePHP1.3] CakePHP 1.3 によるWebアプリケーション開発(秀和システム) のメモ2 | トップページ | [CakePHP1.3] 秀和システムの本 メモ4 - データベースの利用1 »
「プログラム・スクリプト」カテゴリの記事
- [CakePHP1.3] 秀和システムの本 メモ5 - モデルクラスのメンバ変数とコールバック(2012.06.04)
- [CakePHP1.3] 秀和システムの本 メモ4 - データベースの利用1(2012.05.31)
- [CakePHP1.3] 秀和システムの本 メモ3 - Formヘルパー(2012.05.30)
- [CakePHP1.3] CakePHP 1.3 によるWebアプリケーション開発(秀和システム) のメモ2(2012.05.22)
- [CakePHP1.3] CakePHP 1.3 によるWebアプリケーション開発(秀和システム) のメモ(2012.05.18)