モデルに接続するための双方の機能に違いはあるのか?
ClassRegistry::initと$this->loadModelにはAppController内でモデルにアクセスする機能として活用しているほかに、ClassRegistry::initについてはもう一つ別の利用シーンがある。
ClassRegistry::initでモデルにデータを渡すことができる
controllerからviewに対してデータをsetできるように、modelに対してもcontrollerから値をsetできる。以下がその例
$PRODUCT = ClassRegistry::init('Product'); $PRODUCT->set('no_before_after', '1');
上のやり方でmodelにno_before_afterという名前のデータを渡すことができる。$PRODUCTをvar_dump()すればno_before_afterというkeyでデータがセットされているのが確認できる。
Cakephpのモデルからデータを利用する
モデル内では、
$this->data[‘Product’][‘no_before_after’]
でデータにアクセスできる。
function beforeFind($queryData) { if( !$this->data['Product']['no_before_after'] ) { } }
上のような感じでno_before_afterが偽の場合のみ、beforeFindを実行するというが可能になります。