10月 102012
 

こんにちは。ファガイです。
今回は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タグに関しては、
http://www.htmq.com/html/fieldset.shtmlを参考に。

参考書籍:FuelPHP入門

Pocket

 Posted by at 4:16 PM

 Leave a Reply

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>


*