【CodeIgniter】form_openの使い方

CodeIgniter

CodeIgniter のform_openの使い方をまとめていきます。

スポンサーリンク

CodeIgniter のform_openの使い方

まず最初に、ヘルパーのロードを行います。
下記のコードでフォームヘルパーをロードします。

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

余談ですが、Codeigniter のフォームヘルパー関数の多くはフォーム値を自動的にエスケープしてくれるので、セキュリティ面でも安心です。
ヘルパーをロードしたのでform_open関数を使用できます。

form_open([$action = ''[, $attributes = ''[, $hidden = array()]]])

引数を1つずつ解説していきます。

$action(string):フォームの actionもしくはtarget になるURLを指定します。

この時に注意することが、CodeigniterのURLはセグメントベースのアプローチを使用していることです。
例を以下に示します。

example.com/class/function/ID

最初のセグメント(class)は呼び出されるコントローラのクラスを表します。

第2セグメント(function)は呼び出されるメソッドを表します。

第3セグメント(ID)はコントローラに渡されるID、もしくは何かの変数を表します。
ちなみに第3セグメントは任意です。
例えば第3セグメントにDBから取得したIDなどを埋め込むことで、任意のレコードを表示させることができます。

簡単な使用例を以下に示します。

echo form_open('data/send');

このとき、dataは呼び出されるコントローラクラスを表し、sendは呼び出されるメソッドを表します。
また、この例では以下のようなformタグを生成します。

<form method="post" accept-charset="utf-8" action="http://example.com/index.php/ data /send">

ちなみに絶対パスでも書けなくはないですが、環境が変わると全てのURLを書き直す必要が出てきます。
しかし、セグメントベースで書けばコントローラとメソッドのみでURLが記述できるので、その必要がありません。

$attributes (array):属性を追加できます。ちなみに任意です。
次のように連想配列を渡すことで、属性を追加できます。

$attributes = array('class' => 'data', 'id' => 'userform');
echo form_open('data/send', $attributes);

上記のように書くことでformタグにclass属性、id属性も設定された状態で出力されます。
以下のようなformタグを生成します。

<form method="post" accept-charset="utf-8" action="http://example.com/index.php/ data /send" class=" data" id=" userform">

$hidden (array:隠しフィールドを任意で追加します。
隠しフィールドとは画面上には表示せずにuserから入力されない状態にして、特定の値を送信する時に用います。例えば2段階認証で確認ページにデータを送りたい場合、データを隠しフィールドに格納してプログラムにデータを渡す場合とかです。

次のように、連想配列を渡すことで、 隠しフィールドを追加できます。

$hidden = array('username' => 'Tom', 'member_id' => '12');
echo form_open(' data /send', '', $hidden);

上記の場合、以下のようなformタグを生成します。

<form method="post" accept-charset="utf-8" action="http://example.com/index.php/ data /send">
        <input type="hidden" name="username" value=" Tom " />
        <input type="hidden" name="member_id" value="12" />

form_openの使い方を解説しましたが、理解の助けになったならば幸いです。
最後まで読んでくださってありがとうございます。

コメント

  1. […] フォームタグを生成しています。この記事にform_openの詳しい使い方がありますので、時間がある方は読んでみてください。 […]

タイトルとURLをコピーしました