ITの隊長のブログ

ITの隊長のブログです。Rubyを使って仕事しています。最近も色々やっているお(^ω^ = ^ω^)

CakePHPでテーブルを作成しなくてもバリデーションを試す方法

スポンサードリンク

昨日、この本を読み返してみました。


CakePHP2 実践入門 (WEB+DB PRESS plus)

CakePHP2 実践入門 (WEB+DB PRESS plus)


去年購入した本で、一読はしたことがありますが、全然頭に入っていなかったと思いました。


やっぱり本だけじゃ学べないのね。(´・ω・`)


話さておき、本題。




問い合わせフォームとかで、モデルのバリデーションを使いたいんだけど、でもテーブルは作成したくない場合、CakePHPでそれができます!


モデルの変数 $_schema を利用します。


まずはバリデーション用のモデル.phpを作成してください。そして、下記のようにスキーマとバリデーションを記述しましょう。

  • TestValidate.php
<?php

App::uses('Model', 'AppModel');

class TestValidate extends AppModel {

        // DBテーブルを使わないようにする
	public $useTable = false;

	// DBを使わずにバリデーションしたいので、スキーマを定義
	public $_schema = array(
		'email' => array(
			'type' => 'string',
			'length' => 255
		)
	);

        // バリデーションの設定
	public $validate = array(
		'email' => array(
			'rule'       => 'email',
			'allowEmpty' => false,
	        'message'    => 'mailのフォーマット登録してくれお(^ω^# '
		)
	);
}


Controllerと、Viewはテーブルが存在しているときと同じ使い方でおk!(これがMVCの本気・・・・・!)


値のチェックを自分でやるとすごい面倒くさいんだけど、こんなふうに記述するとフレームワークがやってくれるので楽ですね。


でも、一度は自分で組んでみて理解することをオススメします。(すごい面倒くさいですが)


以上。