Archive for 8月, 2014

FuelPHPのドキュメントにも例がありますが、FuelPHPのValidationでuniqueチェックを作ってみました。
本家の例ではValidationを拡張する例として記載があります。

http://fuelphp.com/docs/classes/validation/validation.html

 

但し、DBへのInsert時は上記の拡張例で問題ないのですが、Update時は、
更新するレコード自身を含めてしまうとuniqueチェックで引っかかってしまうため、除外する必要があります。
その処理を公式ドキュメントの例を参考にコードを追加してみました。

また、コアクラスを拡張しているため、/fuel/app/bootstrap.phpを編集する必要があります。

 

Autoloader::add_classes(array(
    // ここにオーバーライドしたいクラスを追加します
    // Example: 'View' => APPPATH.'classes/view.php',
    'Validation' => APPPATH.'classes/validation.php',
));

Modelのコード使用例は以下の通りです。

	public static function validate($id=null)
	{
		
		$val = \Validation::forge();
		$val->add_field('group_code', 'グループコード', 'required|min_length[1]|max_length[4]')
			->add_rule('unique', self::$_table_name . '.group_code', $id);

		return $val;
	}

Controllerのコード例は以下の通りです。

■Insert例

	$val = Model_Group::validate();

■Update例

	$val = Model_Group::validate($post->id);