DB使わないけどvalidationだけしたい場合を経験したので共有します。
最初は$useTable = false;
だけで行けるかと思ったのですが、何かというと
DBにアクセスしたがって少し苦労しました。
たぶんDBなしで動かすこと自体あまり想定されていないと思うので、注意して やってください。
CakePHP 2.3.6時点の情報です。
まずはこれを。
public $useTable = false;
参考:
- http://book.cakephp.org/2.0/ja/models/model-attributes.html#usetable
- http://api.cakephp.org/2.3/class-Model.html#$useTable
上記をやってもテーブル定義情報がないと内部でDBにアクセスしに行こうとす るので、自分で設定します。
protected $_schema = array(
'name' =>array('type'=>'text'),
//...
);
typeにどういう値が書けるかなどは、すみません調べてません。
'text'
と'integer'
は可能でした。
参考?:
コントローラからモデルにデータを設定する際に、set()やcreate()を使うと DBアクセスが発生してしまうので、$dataに直接設定します。
$this->Model->data = $this->request->data;
参考:
- http://book.cakephp.org/2.0/en/models/model-attributes.html#data
- http://api.cakephp.org/2.3/class-Model.html#$data
これで$this->Model->validates()
しても大丈夫なはずです。