フォームの部品

強力なinput()メソッド

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

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

部品タイプの自動判別

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

出力する内容

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

<div class="input">
--before--
<label for="PostTitle">Title</label>
--between---
<input name="data[Post][title]" type="text" value="" id="PostTitle" />
--after--
--error--
</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にするエラーメッセージを表示しない。
エラー表示用メソッドもあります。$this->form->error(string $fieldName, string $text, array $options)

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

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

$options['empty’]

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

$options['dateFormat’]

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

$options['timeFormat']

12または24。24時間表示かどうか。デフォルトは12。

$options['monthNames']

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

$options['minYear']

年の最小値を設定

$options['maxYear']

年の最大値を設定

$options['separator']

デフォルトは'-'

$options['interval']

分の間隔を指定

$options['class']

inputタグのclassを設定

$options['hiddenField']

checkboxeの場合でデフォルトで隠しフィールドを出力します。falseにすると出力しません。

$options['format']

各パーツの出力順を配列で指定。
デフォルトは'before', 'label', 'between', 'input', 'after', 'error'の順。
チェックボックスの場合のデフォルトは'before', 'input', 'between', 'label', 'after', 'error'の順。

参考

フォームの日付入力を日本語ロケールにあわせる

CakePHP Note (v1.3)

Index