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