# CodeIgniter ユーザガイド 日本語版 Version 1.6.1

ユーザガイドを検索

# Formヘルパ

Form ヘルパのファイルには、HTML フォームを使って作業するのを支援する関数が含まれています。

## ヘルパのロード

このヘルパは次のコードを使ってロードします:

`$this->load->helper('form');`

次の関数が利用できます:

## form_open()

設定ファイルにもとづいて構築したベースURLを設定してFormの開始タグを作成します。オプションで、 Formタグの属性と隠しフィールドを追加できます。

HTMLをハードコーディングせずにこのコードを使う主なメリットは、URLが変更になった時に、 移植性が高まることです。

シンプルな例です:

`echo form_open('email/send');`

上の例では、次のように、ベースのURLに "email/send" URI セグメントを追加したところを参照するFormタグを生成します:

`<form method="post" action="http:/www.your-site.com/index.php/email/send" />`

#### 属性の追加

次のように、第2パラメータに連想配列で渡すことで、属性を追加できます:

`$attributes = array('class' => 'email', 'id' => 'myform');
echo form_open('email/send', $attributes);`

上の例は、次のようなフォームを生成します:

`<form method="post" action="http:/www.your-site.com/index.php/email/send" class="email" id="myform" />`

#### 隠しフィールドの追加

次のように、第3パラメータに連想配列で渡すことで、隠しフィールドを追加できます:

`$hidden = array('username' => 'Joe', 'member_id' => '234');
echo form_open('email/send', '', $hidden);`

上の例は、次のようなフォームを生成します:

`<form method="post" action="http:/www.your-site.com/index.php/email/send" class="email" id="myform" />
<input type="hidden" name="username" value="Joe" />
<input type="hidden" name="member_id" value="234" />`

## form_open_multipart()

ファイルをアップロードする際に使うマルチパート(multipart)の指定を属性に追加する以外は、この関数は上のform_open()とまったく同じです。

## form_hidden()

隠しフィールドを生成します。一つのフィールドの 名前 / 値 の両方の文字列を渡すことができます:

`form_hidden('username', 'johndoe');
// 下記のようなタグを生成します:
<input type="hidden" name="username" value="johnodoe" />`

あるいは、複数のフィールドを作成するために、連想配列を渡すこともできます:

`$data = array(
'name' => 'John Doe',
'email' => 'john@some-site.com',
'url' => 'http://www.example.com'
);
echo form_hidden($data);
// 下記のようなタグを生成します:
<input type="hidden" name="name" value="John Doe" />
<input type="hidden" name="email" value="john@example.com" />
<input type="hidden" name="url" value="http://www.example.com" />`

## form_input()

通常のテキストフィールドを生成します。最低限、第1、第2引数に、名前(name属性)、値(value属性)をそれぞれ渡します:

`echo form_input('username', 'johndoe');`

あるいは、フォームに設定すべきデータを含んだ連想配列を渡すこともできます:

`$data = array(
'name' => 'username',
'id' => 'username',
'value' => 'johndoe',
'maxlength' => '100',
'size' => '50',
'style' => 'width:50%',
);
echo form_input($data);
// 下記のようなタグを生成します:
<input type="text" name="username" id="username" value="johndoe" maxlength="100" size="50" style="width:50%" />`

JavaScriptのような追加のデータをフォームに設定したい場合、第3引数に文字列として渡すことができます:

`$js = 'onClick="some_function()"';
echo form_input('username', 'johndoe', $js);`

## form_password()

この関数は、"password" タイプのフィールドをセットする以外は、上の form_input() 関数とあらゆる点で同じです。

## form_upload()

この関数は、ファイルのアップロード時に使用できる "file" タイプのフィールドをセットする以外は、上の form_input() 関数とあらゆる点で同じです。

## form_textarea()

この関数は、"textarea" のフィールドをセットする以外は、上の form_input() 関数とあらゆる点で同じです。Note: 上の例で "maxlength" と "size" 属性を指定する代わりに、"rows" と "cols" 属性を指定します。

## form_dropdown()

ドロップダウンフィールドを生成します。第1引数にフィールド名を、 第2引数に選択肢(option)の連想配列を、そして第3引数には、選択済み状態にしたい項目の値を 設定します。 第3引数に配列を渡すことで、複数選択を生成することができます。 例:

`$options = array(
'small' => 'Small Shirt',
'med' => 'Medium Shirt',
'large' => 'Large Shirt',
'xlarge' => 'Extra Large Shirt',
);
$shirts_on_sale = array('small', 'large');
echo form_dropdown('shirts', $options, 'large');
// 下記のようなタグを生成します:
<select name="shirts">
<option value="small">Small Shirt</option>
<option value="med">Medium Shirt</option>
<option value="large" selected>Large Shirt</option>
<option value="xlarge">Extra Large Shirt</option>
</select>
echo form_dropdown('shirts', $options, $shirts_on_sale);
// 下記のようなタグを生成します:
<select name="shirts" multiple="multiple">
<option value="small" selected="selected">Small Shirt</option>
<option value="med">Medium Shirt</option>
<option value="large" selected="selected">Large Shirt</option>
<option value="xlarge">Extra Large Shirt</option>
</select>`

<select> の開始タグで、JavaScriptなどの追加データを設定したい場合は、 第4引数にそれを文字列として渡すことができます:

`$js = 'onChange="some_function()"';
echo form_dropdown('shirts', $options, 'large', $js);`

## form_fieldset()

fieldset/legend フィールドを生成します。

`echo form_fieldset('Address Information');
echo "<p>fieldset content here</p>\n";
echo form_fieldset_close();
// Produces
<fieldset id="address_info">
<legend>Address Information</legend>
<p>form content here</p>
</fieldset>`

他の関数同様、各属性に値を設定したい場合は、第2引数に連想配列を渡すことができます。

`$attributes = array('id' => 'address_info', 'class' => 'address_info');
echo form_fieldset('Address Information', $attributes);
echo "<p>fieldset content here</p>\n";
echo form_fieldset_close();
// 下記のようなタグを生成します:
<fieldset id="address_info" class="address_info">
<legend>Address Information</legend>
<p>form content here</p>
</fieldset>`

## form_fieldset_close()

</fieldset> の閉じタグを生成します。 タグの下に追加するデータを渡せるというのがこの関数を使う 唯一の利点になります。

`$string = "</div></div>";
echo fieldset_close($string);
// 下記のようなタグを生成します:
</fieldset>
</div></div>`

## form_checkbox()

チェックボックスフィールドを生成します。簡単な例です:

`echo form_checkbox('newsletter', 'accept', TRUE);
// 下記のようなタグを生成します:
<input type="checkbox" name="newsletter" value="accept" checked="checked" />`

第3引数には、チェックボックスがチェック済みかそうでないかを決めるブール値の TRUE/FALSE を設定できます。

このヘルパも他の関数と同様に属性を連想配列で渡すことができます:

`$data = array(
'name' => 'newsletter',
'id' => 'newsletter',
'value' => 'accept',
'checked' => TRUE,
'style' => 'margin:10px',
);
echo form_checkbox($data);
// 下記のようなタグを生成します:
<input type="checkbox" name="newsletter" id="newsletter" value="accept" checked="checked" style="margin:10px" />`

他の関数のように、このタグにJavaScriptなどの追加データを設定したい場合は、 第4引数にそれを文字列として渡すことができます:

`$js = 'onClick="some_function()"';
echo form_checkbox('newsletter', 'accept', TRUE, $js)`

## form_radio()

この関数は、"radio" タイプのフィールドをセットする以外は、上の form_checkbox() 関数とあらゆる点で同じです。

## form_submit()

通常の送信ボタンを生成します。簡単な例です:

`echo form_submit('mysubmit', 'Submit Post!');
// 下記のようなタグを生成します:
<input type="submit" name="mysubmit" value="Submit Post!" />`

他の関数同様、各属性に値を設定したい場合は、第1引数に、連想配列を渡すことができます。 第3引数で、JavaScriptのような追加データをフォームに設定できます。

## form_label()

<label> を生成します。 簡単な例です:

`echo form_label('What is your Name', 'username');
// 下記のようなタグを生成します:
<label id="username">What is your Name</label>`

他の関数同様、各属性に値を設定したい場合は、第3引数に連想配列を渡すことができます。

`$attributes = array(
'class' => 'mycustomclass',
'style' => 'color: #000;',
);
echo form_label('What is your Name', 'username', $attributes);
// 下記のようなタグを生成します:
<label id="username" class="mycustomclass" style="color: #000;">What is your Name</label>`

## form_reset()

通常のリセットボタンを生成します。 使い方は form_submit() と同様です。

## form_close()

</form> の閉じタグを生成します。タグの下に追加するデータを渡せるというのがこの関数を使う 唯一の利点になります。たとえば次のような感じです:

`$string = "</div></div>";
echo form_close($string);
// 下記のようなタグを生成します:
</form>
</div></div>`

## form_prep()

フォームを崩れさせないように、HTML要素の中のクォーテーションなどの文字列をHTMLで安全に使えるようにします。次のような例が挙げられます:

`$string = 'これは "クォーテーションで囲まれた" テキストがある文字列です。';
<input type="text" name="myform" value="$string" />`

上の文字列には、フォームを崩れさせる原因になる、ダブルクォーテーションのセットが含まれています。 form_prep 関数はこれを安全に使えるよう、HTMLを変換します:

`<input type="text" name="myform" value="<?php echo form_prep($string); ?>" />`

Note: このページにリストアップされたいずれのFormヘルパ関数を使うときも、 値は自動的に整形処理されるので、この関数を呼び出す必要はありません。 自分で書いたForm要素の中でだけ、この関数を使用してください。