こんにちは。ファガイです。
今回はFormクラスについてまとめてみました。ニコニコ生放送にて、この内容は書いていたのですが、記述をEvernoteでやってたので、編集が面倒だったりした。
概要と注意点
FuelPHP v1.3当時のまとめとなります。
現在は一部変更点が含まれるかもしれません。
では、Formクラスです。
Formクラス
Form::open()とForm::close()メソッド。
Form::open()は開始フォームタグ(<form>)を作るためのメソッド。Form::close()は終了フォームダグを作るメソッドです。Form::open()メソッドは引数として文字列または配列が指定可能です。
アプリケーション内のURLの場合はコントローラ名以降を指定すれば自動的にフルURLが生成されます。
例
echo Form::open('sample');
結果
<form action="http://localhost/controller/sample" accept-charset="utf-8" method="post">
accept-charsetの値は、APPPATH/config/config.phpでencodingに設定した文字コードが入ります。個別に指定したい場合は、Form::open()メソッドの引数を配列にします。
echo Form::open(array('action' => 'http://example.com/', 'method' => 'get', 'class' => 'form_class'))
また、第2引数にはhiddenのフィールドの設定ができますが、分かりにくくなるのでやめておきます。(Form::hidden()メソッドを使ったほうが見てすぐ分かる)
inputタグの生成
inputタグの生成には、Form::input(), Form::password(), Form::hidden(), Form::file(), Form::radio(), Form::checkbox, Form::button, Form::submit(), Form::reset() メソッドがあります。
メソッド | 生成タグ |
---|---|
Form::input() | <input type=”text”>等 |
Form::password() | <input type=”password”> |
Form::hidden() | <input type=”hidden”> |
Form::file() | <input type=”file”> |
Form::checkbox() | <input type=”checkbox”> |
Form::radio() | <input type=”radio”> |
Form::button() | <input type=”button”> |
Form::submit() | <input type=”submit”> |
Form::reset() | <input type=”reset”> |
Form::input(),password(),hidden(),file(),checkbox(),radio()メソッド
Form::input()メソッドからForm::radio()メソッドまでは同じ引数を持ちます。
第1引数:フィールド名(必須。name属性に値する) 第2引数:値(value値) 第3引数:属性名(key)から値(value)への連想配列
例
echo Form::input('first_name', '', array('size'=>20);
結果
<input type="text" name="first_name" value="" id="form_first_name" size="20">
input()メソッドに関してはtypeはデフォルトではtextだが、第3引数にtypeを指定することで他のtypeも出力できる。(他のメソッドでも可能かなと思ったらできませんでした。HTML5で使われるinput属性に使われそう。)
また、labelタグもつけたほうが良いでしょう。Form::label()メソッドを使用することで、labelタグが出力できます。引数は以下の通りです。
第1引数:出力文字列。 第2引数:for属性値。ターゲットになっているフィールドのidを指定する。
補足
inputタグ等のidは自動的に接頭辞にform_をつけた形になります。先ほどの例で気になった方も居るかもだったので。また、label()メソッドの第2引数に関しても接頭辞にform_を付ける形になっているので、以下のような指定方法となります。(あまり考えなくていい)
echo Form::label('名前', 'first_name');
echo Form::input('first_name', '', array('size' => 20));
また、注意点としてはラジオボタンやチェックボックスの場合はnameが同じ値となってしまい、labelの意味を果たさなくなってしまうので第3引数でidを別で指定しなくてはいけません。
Form::button(),submit(),reset()メソッド
上記のメソッドは同じ2つの引数を持ちます。
第1引数:name属性の値 第2引数:value属性の値
Form::textarea()メソッド
textareaタグを生成します。引数はForm::input()の時と同様です。
Form::select()メソッド
selectタグとoptionタグを生成するメソッドです。引数も、他のメソッドと異なります。
第1引数:selectタグのname属性に入るフィールド名 第2引数:デフォルト選択肢の値 第3引数:optionタグで表示する選択肢を値(key)から表示文字列(value)の連想配列で記述
例
$prefs = array(
'1' => '北海道',
'2' => '青森県',
...
'47' => '沖縄県',
);
echo Form::select('pref_id', 1, $prefs);
結果
<select name="pref_id" id="form_pref_id">
<option value="1" style="text-indent: 0px;" selected="selected">北海道</option>
<option value="2" style="text-indent: 0px;">青森県</option>
...
<option value="47" style="text-indent: 0px;">沖縄県</option>
</select>
と、なります。
Form::fieldset_open()とForm::fieldset_close()
複数のフィールドをグループ化する、fieldsetタグを出力するためのメソッドです。
第1引数:fieldsetタグの属性を属性(key)から値(value)への連想配列で 第2引数:legendタグで囲んで出力する文字列
fieldsetタグ、legendタグに関しては、
参考書籍:FuelPHP入門
コメント