test

CakePHP Note

フォームの部品

UPDATE:2009.11.13

強力なinput()メソッド

formヘルパーはinput()メソッド1つで様々なフォームの部品を自動判別して出力する事が出来ます。select()やtextarea()といったメソッドも用意されていますが、input()メソッド1つで柔軟に対応できます。
$form->input($fieldName, $options=array())

    echo $form->create('Post');
    echo $form->input('title');               //type='text'
    echo $form->input('body');             //textarea
    echo $form->input('category_id'); //select
    echo $form->input('Tag');              //multiple select box
    echo $form->end('Submit');

部品タイプの自動判別

データベースのカラム名やカラム型、アソシエーションやコントローラーからビューにセットされるデータ等に応じてフォームの部品タイプを判断し生成ます。

出力する内容

このメソッドはinputタグを出力する以外に、inputタグの前にlabelタグを出力し、さらにそれらを囲むdivタグが出力します。

$optionsで指定できる内容

$options['type’]

部品タイプを指定できます。'text', 'checkbox', 'radio', 'select','file'など。'date','datetime','time'も使用できる。

$options['options’]

ラジオボタンやセレクトメニューの選択肢。array('レコードID'=>'表示項目',,,)。Mode->find('list')で取得した配列を渡せる。Mode->find('list')で取得するときの表示項目はModel->displayFieldで設定できます。詳しくはモデルの属性についてのページをご覧ください。配列を与えて複数のチェックボックスを作るときは'multiple’にも'checkbox'を設定します。

$options['selected’]

選択済み項目。レコードIDまたはレコードIDの配列

$options['multiple’]

複数選択できるセレクトボックスになる。'checkbox'も指定できる。

$options['maxLength’]

最大文字数

$options['before’], $options['between’] and $options['after’]

labelタグの前、labelタグとinputタグの間、inputタグの後などに指定したものを出力します。

$options['div’]

divタグで囲むかどうか。デフォルトtrue。
連想配列でdivタグの属性(id,class,styleなど)を設定できます。

$options['label’]

labelタグを出力するかどうか。デフォルトtrue。

$options['error’]

検証エラーの時に表示するメッセージを連想配列(ルール名=>メッセージ)で指定。モデルの検証設定に設定した以外のメッセージを使用したい場合。
falseにするエラーメッセージを表示しない。
エラー表示用メソッドもあります。$form->error(string $fieldName, string $text, array $options)

$options['rows'], $options['cols']

テキストエリアの幅と行数

$options['empty’]

リストなどで空の項目を使用するかどうか。

$options['dateFormat’]

'DMY','MDY','YMD','NONE'を設定できます。デフォルトは'DMY'。

$options['timeFormat']

$options['monthNames']

falseにすると日付の月を文字列ではなく数値で表示します。

$options['minYear']

年の最小値を設定

$options['maxYear']

年の最大値を設定

$options['separator']

デフォルトは'-'

$options['interval']