ClassRegistry::initと$this->loadModel

モデルに接続するための双方の機能に違いはあるのか?

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を実行するというが可能になります。

Webエンジニアブログにコメント

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

ClassRegistry::initと$this->loadModelの記事にコメントを投稿