CakePHPでDBを使わないけどバリデートとかしたい

基本はモデルで、

var $useTable = false;

ですが、これだとバリデーションをかけたり
FormHelperを使ったりするとDBを読みに行ってエラーを吐きます。


CakePHP(のモデルクラス)は、テーブルの構成情報を内部的に持っていて
それがないからエラーを吐いて止まってしまう…ということらしいです。
なので、ダミーのテーブル構成情報をモデルに与えてやります。

var $_schema = array('id' => array('type' => 'integer'));

これはホントならこんな感じになる。

var $_schema = array(
    'id' => array('type' => 'integer'),
    'name' => array('type' => 'string', 'length' => 500),
    'birthdat' => array('type' => 'datetime')
);

みたいな。テーブルの構成情報が乗っかるわけです。
それを最低限idだけ宣言してやって渡せば、一応は動くようになります。

ただし実際にはdebugモードを1以上にするとわかるように
接続を試みて失敗はしています。正常動作ってわけでもない。


だから仕方なくsqliteに接続してるように見せかけてエラーを
出さないようにはしています。根本的な解決にはなってないけど、仕方ない。


IT『苦労と試行』日記 - 投稿の詳細: DB なし Model で FormHelper を使う方法
http://kuroutoshikou.blog16.jp/index.php/2009/11/06/db_a_oa_model_a_s_formhelper_a_afia_a_sa


"DBを使わずにFormHelperを使用するときは" フォーラム - CakePHP Users in Japan
http://cakephp.jp/modules/newbb/viewtopic.php?topic_id=1610&forum=6&post_id=3733#forumpost3733