en.gはwebサイト制作に関する技術的な情報を発信するサイトです。

【CodeIgniter】postされた値以外の値をバリデーションする方法

通常、codeigniterのフォームバリデーションライブラリの「run()」メソッドはpostされた値に対して自動的にバリデーションを実行しますが、任意の値に対してバリデーションを実行したい時があります。set_data()メソッドを利用することでpostされた値以外の値に対してバリデーションを実行することができます。

set_data()メソッドを利用して任意の値にバリデーションを実行する

以下サンプルのとおり、set_data()メソッドに配列で値をセットします。配列のキー名とバリデーションルールのfieldキーに関連性をもたせてください。また順番も重要で、データセットのあとにルールのセットを行います。


// |
// | バリデーション対象の値を設定する
// |
$form_data = array(
"name"=>"yamada taro",
"mail"=>""
);
// |
// | バリデーションルールを作成する
// |
$rules = array(
	array(
		"field"		=> "name",
		"label"		=> "名前",
		"rules"		=> "required"
	),
	array(
		"field"		=> "mail",
		"label"		=> "メールアドレス",
		"rules"		=> "required"
	),
);
// |
// | データをセット
// |
$this->form_validation->set_data($form_data);
// |
// | バリデーションルールをセット
// |
$this->form_validation->set_rules($rules);
// |
// | バリデーション実行
// |
$flg = $this->form_validation->run();