CodeIgniter

CodeIgniterのフォームヘルパ

投稿日:

『CodeIgniterユーザガイド日本語版』サイトで、ファイルアップロードクラスを勉強しようと思ったら、formヘルパ関数を使ったコードの表記がありました。これは先にformヘルパを勉強する必要があると思いましたので、今日はCodeIgniterのフォームヘルパについて勉強しようと思います。

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

これは、お馴染みのヘルパを呼び出すメソッドです。これでフォームヘルパが使用可能になります。

それでは、コードを少しずつ見ていきましょう。

form_open()

ユーザガイドには、『設定ファイルに基づいて構築したベース URL を設定して form の開始タグを作成します。 オプションで、form タグの属性と隠しフィールドを追加する事が出来、設定ファイルの文字コードの値に基づき、常に accept-charset 属性が付与されます。』とありますが、意味がいまいち理解できないので、実際にコードを書いて試してみます。『application/controllers』フォルダに『formhelper_sample.php』を作成し、下記のコードを入力します。

class Formhelper_sample extends CI_controller{
 function index()
 {
	 $this->load->helper('form');
	 echo form_open('formhelper_sample/send_mail');
	 echo "メールアドレス:".form_input('mailto','')."<br>";
	 echo "件名:".form_input('subject','')."<br>";
	 echo "内容:".form_textarea('body','')."<br>";
	 echo form_submit('submit','送信');
 }
	function send_mail()
	{
		$this->load->library('email');

		if($this->input->post('mailto')!=null){
			$mailto=$this->input->post('mailto');
			$subject=$this->input->post('subject');
			$body=$this->input->post('body');
			$this->email->from('nakada@winroad.info','winroad徒然草');
			$this->email->to($mailto);

			$this->email->subject($subject);
			$this->email->message($body);

			$this->email->send();

			echo $this->email->print_debugger();
		}else{
			header("Location: http://ci.builwing.co.jp/formhelper_sample");
		}
	}
}

これは、以前『CodeIgniterでEmail送信』で作成したEmail送信プログラムをビューファイルを使わずにControllerの中でフォームヘルパを使用して作成してみました。

それでは、ブラウザで確認してみましょう。実際メールアドレスを入力して、件名と内容を入力したら、きちんとメールが届きました。

これでわかるように『form_open()』は、HTMLフォームの『action=""』の中に『ベースURL+()の中のURI"』を代入し、設定された文字コードを指定することです。このコードの例で言えば、『form_open(formhelper_sample/sendmail』は、以下のようなHTMLタグを生成します。

<form  method="POST" accept-charset="UTF-8" action="http://ci.builwing.co.jp/formhelper_sample/send_mail">

 form_input()

これは、通常のテキストフィールドを生成します。第1引数に名前(name属性)、第2引数に値(value)を渡します。つまり、『form_input('mailto','')』は

<input type="text" name="mailto" value="">

というHTMLタグを生成します。また連想配列も渡すことができるみたいです。

$data=array(
    'name' =>'username',
    'id' => 'username',
    'value' => 'test',
    'maxlength' => '100',
    'size' => '50',
    'style' => 'width:50%',
    );
echo form_input($data);

は、下記のようなHTMLタグを生成します。

<input type="text" name="username" id="username" value="test" maxlength="100" size="50" style="width:50%" />

form_textarea

これはテキストエリアを生成します。あとは、form_input()とおなじです。

form_submit()

これは、通常の送信ボタンを生成します。『form_submit('submit','送信');』は下記のようなHTMLタグを生成します。

<input type="submit" name="submit" value="送信" />

以下いろいろなコードがありますので、詳しく知りたい方は、『CodeIgniterユーザーガイド日本語版』のサイトへどうぞ。

これで、一応フォームヘルパの使い方がわかったところで、次回はファイルアップロードクラスを勉強したいと思います。

本日は、以上です。

-CodeIgniter
-

Copyright© WinRoad徒然草 , 2018 All Rights Reserved Powered by AFFINGER5.