« [CakePHP1.3] CakePHP 1.3 によるWebアプリケーション開発(秀和システム) のメモ2 | トップページ | [CakePHP1.3] 秀和システムの本 メモ4 - データベースの利用1 »

2012年5月30日 (水)

[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 »

プログラム・スクリプト」カテゴリの記事

2019年11月
          1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30

Amazonリンク

ダイビング写真(swf)

ブログ内検索

  • Google
    WWW を検索
    ブログ内を検索

リンク(いつもお世話さま)

  • ソニーストア
     iTunes Store(Japan)
    Just MyShop(ジャストシステム)
    ブックオフオンライン
無料ブログはココログ