フォームの部品
強力な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'の順。