CakePHPの1つのモデルで複数のヴァリデーションルールを設定

1つのモデルで、異なるヴァリデーションルールを使いたいことって、そんなに起こりうることではないかもしれませんが…それでも、時にはそんなこともあるかもしれません。

今回は、そんな場合が出てきた時の対応方法を書きます。

まず、モデル。

class SampleModel extends Model {
	public $validate = array(
		'field1' => array(
			// field1のヴァリデーションルールを記述
		),
		'field2' => array(
			// field2のヴァリデーションルールを記述
		),
		'field3' => array(
			// field3のヴァリデーションルールを記述
		),
	);
	public $otherValidate = array(
		'field1' => array(
			// field1の別のヴァリデーションルールを記述
		),
		'field4' => array(
			// field4のヴァリデーションルールを記述
		),
	);
}

コントローラ内で、特に何も指定せずにヴァリデーションを行う場合には、$validateのヴァリデーションルールが適応されます。

$validateではなく、$otherValidateのヴァリデーションルールを使用したい場合には、コントローラ内で下記を記述します。

$this->SampleModel->validate = $this->SampleModel->otherValidate;

そうすると、$otherValidateがヴァリデーションルールとして適応されます。

初めにも書きましたが、滅多にあることではないかもしれませんが…こんな風にすると実現できます。

お見積もりフォーム